DogStatsD のデータ集計

Datadog の DogStatsD は、StatsD プロトコルを、いくつか固有の機能を追加して実装します。DogStatsD を使用すると、アプリケーションコードのメトリクス送信や監視を、コードをブロックせずに行うことができます。データはアプリケーションから UDP を通じてローカルの(Datadog Agent に組み込まれた) DogStatsD サーバーに送信され、そこで集計されてから、Datadog の API エンドポイントに送られます。DogStatsD のセットアップについてはこちらを参照してください

この記事では、データを集計する理由と、その方法について説明します。

メトリクスを集計する理由

データを集計することによって、一定の時間を必要とする API 呼び出しの回数を減らし、パフォーマンスを向上させることができます。

たとえば、COUNT メトリクスが短時間に 1,000 回(1 回につき 1 ずつ)インクリメントされるとします。DogStatsD サーバーは API 呼び出しを 1,000 回行うのではなく、集計して数回だけ呼び出します。ライブラリは状況に応じて(以下を参照)、たとえば 1,000 の値を持つデータポイントを 1 つ送信することもあれば、累積値が 1,000 である複数のデータポイントを送信することもあります。

DogStatsD サーバーで集計が行われる方法

DogStatsD は 10 秒の_フラッシュ間隔_を使用します。10 秒ごとに、DogStatsD は前回のフラッシュ以降に受信したすべてのデータをチェックし、同じメトリクス名で同じタグを持つすべての値を 1 つの値に集計します。

: StatsD プロトコルの場合、StatsD クライアントはメトリクスにタイムスタンプを付けて送信しません。タイムスタンプはフラッシュ時に追加されます。したがって、10:00:10 にフラッシュが発生する場合、(Datadog Agent に組み込まれた)DogStatsD サーバーは、10:00:00 から 10:00:10 の間に受信したすべてのデータを 1 つのデータポイントに集計し、10:00:00 のタイムスタンプを付けます。

メトリクスタイプごとの集計規則

同じフラッシュ間隔の間に受信するすべての値を集計して送信される値は、メトリクスのタイプによって次のように異なります。

メトリクスタイプフラッシュ間隔ごとに行われる集計方法
GAUGE最後に受信したデータポイントが送信されます。
COUNT受信したすべてのデータポイントの合計が送信されます。
HISTOGRAM受信したすべてのデータポイントの最小、最大、合計、平均、95 パーセンタイル、カウント、および中央値が送信されます。
SET一意なデータポイントの数が送信されます。
DISTRIBUTIONグローバルな分布として集計します。

その他の参考資料

PREVIEWING: may/unit-testing