メトリクスタイプ

概要

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

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

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

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

  • COUNT
  • RATE
  • GAUGE
  • DISTRIBUTION

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

送信とアプリ内タイプ

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

Datadog が受信するデータの大部分は、Agent から Agent チェックまたは DogStatsD を通じて送信されます。これらの送信方法では、フラッシュ時間間隔内で 1 つの Agent について収集される複数値の集計方法がメトリクスのタイプによって決まります。Agent は、これらの値を結合し、その間隔の単一の代表メトリクス値にします。結合後の値が、単一のタイムスタンプで Datadog に保存されます。

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

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

メトリクスタイプ

定義

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

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

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

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

GAUGE メトリクス送信タイプは、1 つの時間間隔内のイベントのスナップショットを表します。この代表スナップショット値は、1 つの時間間隔内に Agent に送信された最後の値です。GAUGE は、使用可能なディスクスペースや使用中のメモリなど、継続的に報告されるものを測定するために使用できます。

HISTOGRAM メトリクス送信タイプは、1 つの時間間隔内で Agent 側で計算された値セットの統計分布を表します。Datadog の HISTOGRAM メトリックタイプは、StatsD タイミングメトリックタイプの拡張です。Agent は、定義された時間間隔内に送信された値を集約し、値セットを表す複数の異なるメトリクスを生成します。

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

<METRIC_NAME>.avg
時間間隔内に送信された X 個の値の平均値を表します。
Datadog アプリ内タイプ: GAUGE
<METRIC_NAME>.count
時間間隔内に送信された値の数 X を表します。Agent はこの数を RATE として送信するため、アプリ内で表示される値は X/interval です。
Datadog アプリ内タイプ: RATE
<METRIC_NAME>.median
時間間隔内に送信された X 個の値の中央値を表します。
Datadog アプリ内タイプ: GAUGE

<METRIC_NAME>.95percentile 時間間隔内に送信された X 個の値の 95 パーセンタイルを表します。
Datadog アプリ内タイプ: GAUGE

<METRIC_NAME>.max
時間間隔内に送信された X 個の値の最大値を表します。
Datadog アプリ内タイプ: GAUGE

:

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

DISTRIBUTION メトリクス送信タイプは、分散インフラストラクチャー全体で計算された値セットのグローバル統計分布を表します。DISTRIBUTION は、基盤となるホストとは独立して、サービスのような論理オブジェクトをインスツルメントするために使用できます。

HISTOGRAM メトリクスタイプが特定の時間間隔内で Agent に対して集計するのに対し、DISTRIBUTION メトリクスは特定の時間間隔内のすべての生データを Datadog に送信します。集計はサーバー側でなされます。基礎となるデータ構造が生未集計データを表すため、分布は 2 つの主要な機能を提供します。

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

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

avg:<METRIC_NAME>
時間間隔内に送信された X 個の値の平均値を表します。
Datadog アプリ内タイプ: GAUGE
count:<METRIC_NAME>
時間間隔内に送信されたポイントの数を表します。XAgent はその数を COUNT として送信します。
Datadog アプリ内タイプ: COUNT
max:<METRIC_NAME>
時間間隔内に送信された X 個の値の最大値を表します。
Datadog アプリ内タイプ: GAUGE
min:<METRIC_NAME>
時間間隔内に送信された X の最小値を表します。
Datadog アプリ内タイプ: GAUGE

sum:<METRIC_NAME> 時間間隔内に送信された X 個の値の合計値を表します。
Datadog アプリ内タイプ: COUNT

: 分布メトリクス値の異なる複数の集計値はアプリ内でゲージまたはカウントとして_表され_ますが、メトリクス自体はタイプ DISTRIBUTION を保持します。

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

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

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

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

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

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

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

メトリクス名Datadog アプリ内タイプ
request.response_time.histogram.avg1.88GAUGE
request.response_time.histogram.count0.8RATE
request.response_time.histogram.median2GAUGE
request.response_time.histogram.95percentile3GAUGE
request.response_time.histogram.max3GAUGE

2 つの Web サーバー 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 つの集約が両方の Web サーバーから収集されたすべての値のグローバルな統計分布を表します。

メトリクス名Datadogアプリ内タイプ
avg:request.response_time.distribution1.73GAUGE
count:request.response_time.distribution11COUNT
max:request.response_time.distribution3GAUGE
min:request.response_time.distribution1GAUGE
sum:request.response_time.distribution19COUNT

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

GUAGE や HISTOGRAM などの他のメトリクスタイプと同じように、ディストリビューションメトリクスタイプでは次の集計が利用可能です: countminmaxsum、およびavg。ディストリビューションメトリクスのタグ付け方法は、当初は他のメトリクスと同じです (コード内で設定されたカスタムタグによる)。

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

メトリクス名Datadogアプリ内タイプ
p50:request.response_time.distribution2GAUGE
p75:request.response_time.distribution2GAUGE
p90:request.response_time.distribution3GAUGE
p95:request.response_time.distribution3GAUGE
p99:request.response_time.distribution3GAUGE

つまり、特定の時間間隔内にパーセンタイル集計を指定したディストリビューションメトリクスでは、countsumminmaxavgp50p75p90p95、および p99 の 10 個の集計を使用できます。

: 分布メトリクス値の異なる複数の集計値はアプリ内でゲージまたはカウントとして_表され_ますが、メトリクス自体はタイプ DISTRIBUTION を保持します。

タグ付けのカスタマイズ

この機能を使用すると、ホストレベルの粒度を必要としない場合に、メトリクスのタグ付けを制御できます。Metrics without Limits™ の詳細についてはこちらをご覧ください。

: 許可リストベースのタグのカスタマイズでは、タグの除外はサポートされていません。!で始まるタグは追加できません。

送信

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

送信元送信方法 (python)送信タイプDatadog アプリ内タイプ
Agent チェックself.count(...)COUNTCOUNT
Agent チェックself.monotonic_count(...)COUNTCOUNT
APIapi.Metric.send(type="count", ...)COUNTCOUNT
DogStatsDdog.count(...)COUNTRATE
DogStatsDdog.increment(...)COUNTRATE
DogStatsDdog.decrement(...)COUNTRATE

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

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

送信元送信方法 (python)送信タイプDatadog アプリ内タイプ
Agent チェックself.rate(...)RATEGAUGE
APIapi.Metric.send(type="rate", ...)RATERATE

: DogStatsD を通じて RATE メトリクスを取得するには、[COUNT][16] または [HISTOGRAM][18] メトリクスを送信してください。COUNT メトリクスの値と <HISTOGRAM>.count の値は、StatsD フラッシュ期間全体のメトリクス値の時間正規化された差分です。

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

送信元送信方法 (Python)送信タイプDatadog アプリ内タイプ
Agent チェックself.gauge(...)GAUGEGAUGE
APIapi.Metric.send(type="gauge", ...)GAUGEGAUGE
DogStatsDdog.gauge(...)GAUGEGAUGE

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

送信元送信方法 (Python)送信タイプDatadog アプリ内タイプ
Agent チェックself.histogram(...)HISTOGRAMGAUGE, RATE
DogStatsDdog.histogram(...)HISTOGRAMGAUGE, RATE

Datadog Agent に TIMER メトリックを送信することは、DogStatsD 内で HISTOGRAM メトリックタイプを送信することと同等です (標準の StatsD のタイマーと混同しないようにしてください)。DogStatsD TIMER が表すのは期間データだけです。たとえば、コードのセクションが実行されるのにかかる時間です。

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

送信元送信方法 (Python)送信タイプDatadog アプリ内タイプ
DogStatsDdog.distribution(...)DISTRIBUTIONGAUGE, COUNT
APIapi_instance.submit_distribution_points(...)DISTRIBUTIONGAUGE, COUNT

: 分布メトリクス値の異なる複数の集計値はアプリ内でゲージまたはカウントとして_表され_ますが、メトリクス自体はタイプ DISTRIBUTION を保持します。

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

以下は、利用可能なすべてのメトリック送信元と送信方法の概要です。この表は、対応するメトリック送信タイプとアプリ内タイプとの対応を示しています。

送信元送信方法 (Python)送信タイプDatadog アプリ内タイプ
Agent チェックself.count(...)COUNTCOUNT
Agent チェックself.monotonic_count(...)COUNTCOUNT
Agent チェックself.gauge(...)GAUGEGAUGE
Agent チェックself.histogram(...)HISTOGRAMGAUGE, RATE
Agent チェックself.rate(...)RATEGAUGE
APIapi.Metric.send(type="count", ...)COUNTCOUNT
APIapi.Metric.send(type="gauge", ...)GAUGEGAUGE
APIapi.Metric.send(type="rate", ...)RATERATE
DogStatsDdog.gauge(...)GAUGEGAUGE
DogStatsDdog.distribution(...)DISTRIBUTIONDISTRIBUTION
DogStatsDdog.count(...)COUNTRATE
DogStatsDdog.increment(...)COUNTRATE
DogStatsDdog.decrement(...)COUNTRATE
DogStatsDdog.set(...)SETGAUGE
DogStatsDdog.histogram(...)HISTOGRAMGAUGE, RATE

: 分布メトリクス値の異なる複数の集計値はアプリ内でゲージまたはカウントとして_表され_ますが、メトリクス自体はタイプ DISTRIBUTION を保持します。詳しくは、このページの定義セクションを参照してください。

参考資料