メトリクスタイプ

メトリクスタイプ

概要

Datadog に送信される各メトリクスにはタイプが必要です。メトリクスのタイプは、クエリ時のメトリクス値の表示方法、および追加の修飾子および関数を使用した Datadog 内の関連するグラフ化の可能性に影響します。メトリクスのタイプは、メトリクスの概要ページの特定のメトリクスの詳細サイドパネルに表示されます。

: この詳細サイドパネルでメトリクスタイプを変更すると、既存のすべての視覚化およびモニターのメトリクスの動作が変更され、履歴データが無意味なものになる可能性があります。

メトリクスには、次の送信タイプを指定できます。

次の各種メトリクス送信タイプは、Datadog ウェブアプリケーション内にある 4 つのアプリ内メトリクスタイプにマッピングされます。

  • COUNT
  • RATE
  • GAUGE
  • DISTRIBUTION

: タイプなしでメトリクスを Datadog に送信すると、メトリクスタイプは Datadog 内で Not Assigned と表示されます。Not Assigned メトリクスタイプは、最初のメトリクスタイプが送信されるまで、別のアプリ内タイプに変更できません。

送信とアプリ内タイプ

メトリクスは、主に次の 3 つの方法で Datadog に送信されます。

Datadog が受信するデータの大部分は、Agent チェックまたは DogStatsD を介して、Agent によって送信されます。これらの送信方法の場合、メトリクスのタイプにより、フラッシュ時間間隔で Agent で収集された複数の値の集計方法が決まります。Agent は、これらの値を組み合わせて、その間隔の単一の代表的なメトリクス値にします。この組み合わせた値は、単一のタイムスタンプとともに Datadog に保存されます。

Datadog API に直接送信されたデータは、ディストリビューションメトリクスを除き、Datadog によって集計されません。Datadog に送信された生の値はそのまま保存されます。

送信タイプと Datadog アプリ内タイプセクションを参照して、各種メトリクス送信タイプが対応するアプリ内タイプにどのようにマッピングされるかを確認してください。

メトリクスタイプ

定義

COUNT メトリクス送信タイプは、ある時間間隔のイベント発生の合計数を表します。COUNT を使用して、データベースへの接続の合計数またはエンドポイントへのリクエストの合計数を追跡できます。このイベントの数は、時間の経過とともに累積または減少する可能性があり、単調に増加することはありません。

: この COUNT とは異なり、RATE は定義された時間間隔で正規化される 1 秒あたりのイベントの数を表します。

RATE メトリクス送信タイプは、ある時間間隔の 1 秒あたりのイベント発生の合計数を表します。RATE を使用して、データベースへの接続頻度やエンドポイントへのリクエストフローなど、何かが発生している頻度を追跡できます。

: この RATE とは異なり、COUNT メトリクス送信タイプは特定の時間間隔内のイベント発生の合計数を表します。

GAUGE メトリクス送信タイプは、ある時間間隔のイベントのスナップショットを表します。この代表的なスナップショット値は、時間間隔中に Agent に送信された最後の値です。GAUGE を使用して、使用可能なディスク容量や使用中のメモリなど、継続的にレポートする何かの測定を行うことができます。

HISTOGRAM メトリクス送信タイプは、ある時間間隔の Agent 側で計算された一連の値の統計分布を表します。Datadog の HISTOGRAM メトリクスタイプは、StatsD タイミングメトリクスタイプの拡張機能です。Agent は、定義された時間間隔で送信される値を集計し、一連の値を表すさまざまなメトリクスを生成します。

ある時間間隔内に HISTOGRAM メトリクス <メトリクス名> に対して X 個の値を送信した場合、次のメトリクスが Agent によってデフォルトで生成されます。

<METRIC_NAME>.avg
時間間隔内の X 個の値の平均値を表します。
Datadog In-App Type: GAUGE
<METRIC_NAME>.count
間隔内に送信された値の数 (つまり X) を表します。Agent はその数を RATE として送信することで、アプリ内で値 X/interval として表示します。
Datadog In-App Type: RATE
<METRIC_NAME>.median
時間間隔内の X 個の値の中央値を表します。
Datadog In-App Type: GAUGE
<METRIC_NAME>.95percentile
時間間隔内の X 個の値の 95 パーセンタイルを表します。
Datadog In-App Type: GAUGE
<METRIC_NAME>.max
時間間隔内に送信された X 個の値の最大値を表します。
Datadog In-App Type: GAUGE

:

  • どの集計を Datadog に送信するかは、datadog.yaml 構成ファイルhistogram_aggregates パラメーターで構成します。デフォルトでは、maxmedianavgcount の集計だけが Datadog に送信されます。sum および min も利用できます。
  • どのパーセンタイル集計を Datadog に送信するかは、datadog.yaml 構成ファイルhistogram_percentiles パラメーターで構成します。デフォルトでは、95percentile のパーセンタイルだけが Datadog に送信されます。

DISTRIBUTION メトリクス送信タイプは、ある時間間隔の分散インフラストラクチャー全体にわたって計算された一連の値のグローバルな統計分布を表します。DISTRIBUTION を使用して、基底のホストから独立して、サービスなどの論理オブジェクトをインスツルメントすることができます。

Agent で特定の時間間隔内の集計を行う HISTOGRAM メトリクスタイプと異なり、DISTRIBUTION メトリクスは、時間間隔内に収集されたすべての未加工データを Datadog に送信し、サーバー側で集計を行います。基になるデータ構造は集計されておらず、未加工データを表すため、ディストリビューションは次の 2 つの主要な機能を提供します。

  • パーセンタイル集計の計算
  • タグ付けのカスタマイズ

ある時間間隔内に DISTRIBUTION メトリクス <メトリクス名> に対して X 個の値を送信した場合、デフォルトで次の集計をクエリに利用できます。

avg:<METRIC_NAME>
時間間隔内の X 個の値の平均値を表します。
Datadog In-App Type: GAUGE
count:<METRIC_NAME>
時間間隔内に送信されたポイントの数 (つまり X) を表します。Agent はその数を COUNT として送信します。
Datadog In-App Type: COUNT
max:<METRIC_NAME>
時間間隔内に送信された X 個の値の最大値を表します。
Datadog In-App Type: GAUGE
min:<METRIC_NAME>
時間間隔内に送信された X 個の値の最小値を表します。
Datadog In-App Type: GAUGE
sum:<METRIC_NAME>
時間間隔内に送信された X 個の値すべての合計を表します。
Datadog In-App Type: COUNT

Datadog Agent を実行している単一のホストから COUNT メトリクス、activeusers.basket_size を送信するとします。このホストは、フラッシュ時間間隔で次の値を出力します: [1,1,1,2,2,2,3,3]

Agent は、ある時間間隔で受信したすべての値を追加し、合計数(この場合は 15)を COUNT メトリクスの値として送信します。

Datadog Agent を実行している単一のホストから RATE メトリクス、queue_messages.rate を送信するとします。このホストは、フラッシュ時間間隔で次の値を出力します: [1,1,1,2,2,2,3,3]

Agent は、ある時間間隔で受信したすべての値を追加し、 この時間間隔の合計秒数で割った合計数を送信します。この場合、フラッシュ間隔が 10 秒の場合、RATE メトリクスの値として送信される値は 1.5 になります。

Datadog Agent を実行している単一のホストから GAUGE メトリクス、temperature を送信するとします。このホストは、フラッシュ時間間隔で次の値を出力します: [71,71,71,71,71,71,71.5]

Agent は、最後に報告された数値(この場合は 71.5)を GAUGE メトリクスの値として送信します。

たとえば、フラッシュ時間間隔で値 [1,1,1,2,2,2,3,3] を報告するウェブサーバーから HISTOGRAM メトリクス request.response_time.histogram を送信するとします。デフォルトでは、Agent は、この時間間隔のこれらの値の統計分布を表す以下のメトリクスを Datadog に送信します。

メトリクス名 Datadog アプリ内タイプ
request.response_time.histogram.avg 1.88 GAUGE
request.response_time.histogram.count 8 RATE
request.response_time.histogram.median 2 GAUGE
request.response_time.histogram.95percentile 3 GAUGE
request.response_time.histogram.max 3 GAUGE

2 つのウェブサーバー webserver:web_1webserver:web_2 から DISTRIBUTION メトリクス、request.response_time.distribution を送信するとします。特定のフラッシュ時間間隔で、webserver:web_1 が値 [1,1,1,2,2,2,3,3] を持つメトリクスを報告し、webserver:web_2 が値 [1,1,2] を持つ同じメトリクスを報告するとします。この時間間隔で、次の 5 つの集計は、両方のウェブサーバーから収集されたすべての値のグローバルな統計分布を表します。

メトリクス名 Datadog アプリ内タイプ
avg:request.response_time.distribution 1.73 GAUGE
count:request.response_time.distribution 11 COUNT
max:request.response_time.distribution 3 GAUGE
min:request.response_time.distribution 1 GAUGE
sum:request.response_time.distribution 19 COUNT

パーセンタイル集計の計算

GAUGE、HISTOGRAM などのメトリクスタイプと同様に、DISTRIBUTION メトリクスタイプでは countminmaxsumavg の集計を利用できます。ディストリビューションメトリクスは、まず他のメトリクスと同じ方法で (コードで設定されたカスタムタグを使用して) タグ付けられます。

パーセンタイル集計(p50p75p90p95p99`)をディストリビューションメトリクスに追加できます。アプリ内のディストリビューションメトリクスにパーセンタイル集計を追加する場合、次の 5 つの追加集計をクエリに使用できます。

メトリクス名 Datadog アプリ内タイプ
p50:request.response_time.distribution 2 GAUGE
p75:request.response_time.distribution 2 GAUGE
p90:request.response_time.distribution 3 GAUGE
p95:request.response_time.distribution 3 GAUGE
p99:request.response_time.distribution 3 GAUGE

つまり、特定の時間間隔でパーセンタイル集計を指定したディストリビューションメトリクスであれば、countsumminmaxavgp50p75p90p95p99 の 10 個の集計を使用できます。

タグ付けのカスタマイズ

この機能を使用すると、ホストレベルの粒度を必要としない場合に、メトリクスのタグ付けを制御できます。ホワイトリストベースのタグ付け制御の詳細については、ディストリビューションメトリクスのページを参照してください。

: この機能では、! によるタグの除外を使用できません。

送信

次のソースのいずれかから COUNT タイプのメトリクスを送信します。

送信元 送信方法 (Python) 送信タイプ Datadog アプリ内タイプ
Agent チェック self.count(...) COUNT COUNT
Agent チェック self.monotonic_count(...) COUNT COUNT
API api.Metric.send(type="count", ...) COUNT COUNT
DogStatsD dog.count(...) COUNT RATE
DogStatsD dog.increment(...) COUNT RATE
DogStatsD dog.decrement(...) COUNT RATE

: DogStatsD を介して COUNT メトリクスタイプを送信する場合、メトリクスは異なる Agent 間の関連する比較を確保するためにアプリ内に RATE として表示されます。その結果、StatsD カウントは Datadog 内に 10 進数値で表示される場合があります(1 秒あたりの単位を報告するために時間間隔で正規化されるため)。

次のソースのいずれかから RATE タイプのメトリクスを送信します。

送信元 送信方法 (Python) 送信タイプ Datadog アプリ内タイプ
Agent チェック self.rate(...) RATE GAUGE
API api.Metric.send(type="rate", ...) RATE RATE

: DogStatsD を介して RATE メトリクスタイプを送信する場合、メトリクスは異なる Agent 間の関連する比較を確保するためにアプリ内に GAUGE として表示されます。

次のソースのいずれかから GAUGE タイプのメトリクスを送信します。

送信元 送信方法 (Python) 送信タイプ Datadog アプリ内タイプ
Agent チェック self.gauge(...) GAUGE GAUGE
API api.Metric.send(type="gauge", ...) GAUGE GAUGE
DogStatsD dog.gauge(...) GAUGE GAUGE

次のソースのいずれかから HISTOGRAM タイプのメトリクスを送信します。

送信元 送信方法 (Python) 送信タイプ Datadog アプリ内タイプ
Agent チェック self.histogram(...) HISTOGRAM GAUGE、RATE
DogStatsD dog.histogram(...) HISTOGRAM GAUGE、RATE

: TIMER メトリクスを Datadog Agent に送信する場合、これは DogStatsD 内で HISTOGRAM メトリクスタイプを送信することと同等です(標準 StatsD のタイマーと混同しないでください)。タイマーは期間データのみを表します。たとえば、コードのセクションの実行にかかる時間や、ページを完全にレンダリングするのにかかる時間などです。

次のソースから DISTRIBUTION タイプのメトリクスを送信します。

送信元 送信方法 (Python) 送信タイプ Datadog アプリ内タイプ
DogStatsD dog.distribution(...) DISTRIBUTION GAUGE、COUNT

送信タイプと Datadog アプリ内タイプ

以下に、利用可能なすべてのメトリクス送信のソースと方法の概要と、対応するメトリクス送信タイプとアプリ内タイプ間のマッピングを示します。

送信元 送信方法 (Python) 送信タイプ Datadog アプリ内タイプ
Agent チェック self.count(...) COUNT COUNT
Agent チェック self.monotonic_count(...) COUNT COUNT
Agent チェック self.gauge(...) GAUGE GAUGE
Agent チェック self.histogram(...) HISTOGRAM GAUGE、RATE
Agent チェック self.rate(...) RATE GAUGE
API api.Metric.send(type="count", ...) COUNT COUNT
API api.Metric.send(type="gauge", ...) GAUGE GAUGE
API api.Metric.send(type="rate", ...) RATE RATE
DogStatsD dog.gauge(...) GAUGE GAUGE
DogStatsD dog.distribution(...) DISTRIBUTION GAUGE、COUNT
DogStatsD dog.count(...) COUNT RATE
DogStatsD dog.increment(...) COUNT RATE
DogStatsD dog.decrement(...) COUNT RATE
DogStatsD dog.set(...) SET GAUGE
DogStatsD dog.histogram(...) HISTOGRAM GAUGE、RATE

その他の参考資料