メトリクスタイプのモディファイアー
セキュリティモニタリングが使用可能です セキュリティモニタリングが使用可能です

メトリクスタイプのモディファイアー

メトリクスタイプは、メトリクスとそのエミッションソースで表す指標です。メトリクスタイプのドキュメントを参照すると、COUNT および RATE メトリクスタイプは、同じコンセプトである「経時的なメトリクス値の変化」を表すため、お互いとてもよく似ていますが、それぞれ異なるロジックを使用します。

  • RATE: 正規化された値の経時的な変化(1秒ごと)。
  • COUNT: 特定の時間間隔における絶対値の変化。

送信に適したメトリクスタイプは、使用例や送信方法によりそれぞれ異なります。たとえば、

送信されたメトリクスタイプ使用例
RATE複数のホストにおいて受信したリクエストの数を経時的にモニターしたい場合。
RATEソースでの経時的なカウント送信の一貫性をコントロールできないため、アップストリームで比較できるように個々の間隔で正規化します。
COUNT関数が呼び出された回数をカウントしたい場合。
COUNT指定された期間内の収益を数える場合。

RATE および COUNT は同じメトリクスタイプではないため、Datadog のグラフおよびモニターにおける行動や形状が異なります。RATECOUNT が表すメトリクスを調整するには、グラフやモニターで Datadog のアプリケーション内モディファイアー関数を使用します。

アプリ内モディファイアー

主要なアプリ内モディファイアーは as_count()as_rate() の2つです。

モディファイアー説明
as_count()COUNT 形式で指定されたメトリクスを表示するのに必要な操作を設定し、rollup 間隔のメトリクス値の絶対変数を取得します。Rollup 間隔に依存するため、長めの間隔でグラフを作成するとグラフの形が変化することにご注意ください。
as_rate()RATE 形式で指定されたメトリクスを表示するのに必要な操作を設定し、1秒あたりのメトリクス値の絶対変数を取得します。

適用したメトリクスタイプに応じて、動作は異なります。

  • as_count() の効果
    • 補間を無効にします。
    • 時間集計関数を SUM に設定します。
  • as_rate() の効果
    • 補間を無効にします。
    • 時間集計関数を SUM に設定します。
    • 正規化するため、集計後の結果をサンプル間隔で除算します。たとえば、rollup 間隔が 20 秒で毎秒 [1,1,1,1].as_rate() を送信する次のポイントは、[0.05, 0.05, 0.05, 0.05] を生成します。

: 間隔が非常に短くて時間集計が発生しない場合、正規化は行われず、未加工のメトリクス値カウントが戻されます。

  • as_count() の効果
    • 補間を無効にします。
    • 時間集計関数を SUM に設定します。
    • 集計後の結果をサンプル間隔で乗算します。たとえば、rollup 間隔が 20 秒で毎秒 [0.05, 0.05, 0.05, 0.05].as_count() を送信する次のポイントは、[1,1,1,1] を生成します。
  • as_rate() の効果
    • 補間を無効にします。
    • 時間集計関数を SUM に設定します。

GAUGE メトリクスタイプはメトリクスの絶対値と最終値を表します。as_count()as_rate() モディファイアーは影響しません。

Datadog 内でメトリクスタイプを変更する

通常は必要ありませんが、メトリクスサマリーページでメトリクスのタイプを変更することができます。

使用例:

  1. 処理されたリクエスト数をカウントする app.requests.served というメトリクスを、誤って StatsD から GAUGE として送信しました。そのため、そのメトリクスの Datadog タイプは GAUGE になっています。

  2. 時間集計のため、app.requests.served は、StatsD の COUNT メトリクスとして送信するつもりでした。そうすれば、「昨日処理されたリクエスト数の合計はいくつか」という質問には、sum:app.requests.served{*} というクエリで答えることができます (GAUGE メトリクスタイプでは意味がないクエリです)。

  3. しかし、app.requests.served という名前を引き続き使いたいので、適切な COUNT タイプの新しいメトリクス名を送信するのではなく、app.requests.served のタイプを変更することにしました。

    • N 個のリクエストが処理された後で dogstatsd.increment('app.requests.served', N) を呼び出すように、送信コードを更新します。
    • メトリクスサマリーページから Datadog アプリ内タイプを RATE に更新します。

この結果、app.requests.served のタイプを変更する前に送信されたデータは、アプリ内タイプ RATE ではなく GAUGE として解釈される形式で保存されているため、正しく動作しません。手順 3 の後に送信されるデータは、正しく解釈されます。

GAUGE として送信された履歴データを失いたくない場合は、app.requests.served のタイプは変更せずに、適切なタイプの新しいメトリクス名を作成します。

: Agent チェックの self.increment は、単調増加カウンターの増分を計算するのではなく、チェック実行時に渡された値を報告します。単調増加カウンターの増分値を送信する場合は、self.monotonic_count を使用してください。