モニター評価での as_count()

概要

as_count() および as_rate() モディファイアーを使用してクエリを計算すると、モニター評価でさまざまな結果を得ることができます。演算と少なくとも 1 つの as_count() モディファイアーを含むモニターは、演算と時間集計を行う順序を変更するために、異なる評価パスを使用します。

エラー率の例

requests.error および requests.total メトリクスを使用して、5 分間のエラー率を監視するとします。以下のように、整った時系列ポイントを使用して、5 分のタイムフレームで 1 回の評価を行う場合を考えます。

分子: sum:requests.error{*}

| Timestamp           | Value |
|:--------------------|:------|
| 2018-03-13 11:00:30 | 1     |
| 2018-03-13 11:01:30 | 2     |
| 2018-03-13 11:02:40 | 3     |
| 2018-03-13 11:03:30 | 4     |
| 2018-03-13 11:04:40 | 5     |

分母: sum:requests.total{*}

| Timestamp           | Value |
|:--------------------|:------|
| 2018-03-13 11:00:30 | 10    |
| 2018-03-13 11:01:30 | 10    |
| 2018-03-13 11:02:40 | 10    |
| 2018-03-13 11:03:30 | 10    |
| 2018-03-13 11:04:40 | 10    |

2 つの計算方法

次のクエリを classic_eval_path とします。

sum(last_5m): sum:requests.error{*}.as_rate() / sum:requests.total{*}.as_rate()

次のクエリを as_count_eval_path とします。

sum(last_5m): sum:requests.error{*}.as_count() / sum:requests.total{*}.as_count()

パスに応じた評価の結果を比較します。

パス動作計算式結果
classic_eval_path除算のに集計関数を適用(1/10 + 2/10 + 3/10 + 4/10 + 5/10)1.5
as_count_eval_path除算のに集計関数を適用(1+2+3+4+5) / (10+10+10+10+10)0.3

どちらも数学的には正しい評価です。目的に合った方法を選択してください。

もう少しわかりやすくクエリを記述すると、classic_eval_path は次のようになります。

sum(last_5m):error/total

as_count_eval_path は次のようになります。

sum(last_5m):error
-----------------
sum(last_5m):total

通常、エラー率の avg 時間集計には .as_rate() が合理的ですが、sum 集計には .as_count() が推奨されます。sum 以外の集計方法を .as_count() と組み合わせて使用しても意味がありません (併用できません)。

ご質問は、Datadog のサポートチームまでお問い合わせください