6

statsd を介して多数の統計をグラファイトに発行するアプリケーションがあります。統計の 1 つは、サービスがメッセージを受信するたびに統計の増分を statsd に送信するだけです。この統計の経時的な相対的なトラフィックを示すグラフを表示する必要があります。一般的に言えば、たとえば 10 秒ごとに更新されるグラフを表示し、その 10 秒間に受信したメッセージの数と、一定期間の履歴を表示できるはずです。ただし、API クエリをどのようにフォーマットしても、正確なデータを取得できないようです。私はこれを含む多くの記事を読みました:

http://code.hootsuite.com/accurate-counting-with-graphite-and-statsd/

それは良い洞察を与えるようですが、それでも私が必要とするものを十分に与えてはくれません. これは私が来た締めくくりです:

積分 (hitcount (stats.recieved、「10 秒」))

しかし、私はこれの累積的な結果が気に入らず、これを実行すると、受信したメッセージのログに表示されるものとはほど遠い統計が得られます。多少のパケット損失を受け入れても問題ありませんが、桁違いの話です。私は何か間違ったことをしていることを知っています。誰かが私に何についての洞察を与えることができるかを願っています。

4

1 に答える 1

13

確認/試行するいくつかのこと:

Statsd 用にグラファイトを構成する

Graphite で、Statsd がデータを送信する方法と一致する 保持スキーマ集計設定を使用していることを確認してください(つまり、10 秒のフラッシュ間隔ごとに 1 つのデータ ポイントを送信します)。

単一の Statsd アグリゲーターを実行する

複数の statsd デーモンを実行するとメトリックがドロップされるため、Statsd の 1 つのインスタンスのみを実行していることを確認してください (Graphite は、最高精度の 1 つのデータ ポイントのみを保存するように構成されているため10s:6h) 。

UI または URL API の時間範囲を 6 時間未満に制限する

6 時間のしきい値を超えるデータ (たとえば、現在から 7 時間前まで) を含むグラフを表示すると、表示されたグラフの 1 分間分の集計カウント データが表示されるようになります ( で statsd 用に Graphite を構成した場合retentions = 10s:6h,1min:7d,10min:5y)。ロールアップは、時間範囲内の最も古いデータ ポイントに基づいて発生します (たとえば、今から 7 日以上 = 10 分のロールアップが得られます)。

まばらまたは「バースト」データを送信し、かつ古い時間範囲を表示している場合 (集約のトリガー)

xFilesFactor が十分に低く、null の割合が高い場合でも、集計によって null 以外の値が生成されることを確認します。たとえば、最初の 10 秒間に 100 のリクエストがあり、1 分間に残りの 50 秒間に 100 のリクエストがない100, null, null, null, null, null場合、XFilesFactor が 1/6 よりも高い場合、データが古くなるとストレージが合計されて null になります。statsd が推奨するグラファイト構成を使用すると、これを処理できますが、データが失われたように見える可能性があるため、知っておくとよいでしょう。

スキーマまたは集計の変更を保存する

メトリクスが保存された後にグラファイト スキーマまたは集計設定を変更した場合 (ウィスパー = グラファイトのストレージ)、メトリクスの .wsp ファイルを削除するか (グラファイトはそれらを再作成します)、実行する必要がありますwhisper-resize.py

設定の検証

.wsp ファイルで whisper-info.py を実行することにより、一部のウィスパー データに対して設定を確認できます。/graphite/storage/whisper/ でメトリックの 1 つの .wsp ファイルを見つけますwhisper-info.py my_metric_data.wsp。whisper-info.py の出力は、ストレージ設定がどのように機能しているかについて詳しく教えてくれるはずです。

TLDR;

Graphite が StatsD からのメトリクスの 10 秒間隔ごとに 1 つのデータ ポイントを保存するように設定されていることを確認する必要があります。Graphite が Statsd からのカウント データを合計している (平均していない) ことを確認する必要があります。これらは両方とも、推奨されるStatsd 構成設定を使用して処理できます。複数の Statsd アグリゲーターを実行しないでください。UI を使用する場合は、返されるデータを 6 時間未満に制限するか、保持のしきい値を超えるデータを参照するときに、どのロールアップを表示しているかを理解してください。最後に、設定が有効であることを確認します (既にメトリックを送信している場合)。

于 2013-08-28T15:01:54.267 に答える