メトリクスタイプ

概要

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 メトリクス、notifications.sent を送信するとします。このホストは、フラッシュ時間間隔で次の値を出力します: [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.avg1.88GAUGE
request.response_time.histogram.count0.8RATE
request.response_time.histogram.median2GAUGE
request.response_time.histogram.95percentile3GAUGE
request.response_time.histogram.max3GAUGE

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.distribution1.73GAUGE
count:request.response_time.distribution11COUNT
max:request.response_time.distribution3GAUGE
min:request.response_time.distribution1GAUGE
sum:request.response_time.distribution19COUNT

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

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

パーセンタイル集計(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

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

タグ付けのカスタマイズ

この機能を使用すると、ホストレベルの粒度を必要としない場合に、メトリクスのタグ付けを制御できます。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 内に 10 進数値で表示される場合があります(1 秒あたりの単位を報告するために時間間隔で正規化されるため)。

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

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

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

次のソースのいずれかから 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

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

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

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

送信タイプと 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(...)DISTRIBUTIONGAUGE、COUNT
DogStatsDdog.count(...)COUNTRATE
DogStatsDdog.increment(...)COUNTRATE
DogStatsDdog.decrement(...)COUNTRATE
DogStatsDdog.set(...)SETGAUGE
DogStatsDdog.histogram(...)HISTOGRAMGAUGE、RATE

参考資料