概要
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
は次のようになります。
as_count_eval_path
は次のようになります。
sum(last_5m):error
-----------------
sum(last_5m):total
通常、エラー率の avg
時間集計には .as_rate()
が合理的ですが、sum
集計には .as_count()
が推奨されます。sum
以外の集計方法を .as_count()
と組み合わせて使用しても意味がありません (併用できません)。
ご質問は、Datadog のサポートチームまでお問い合わせください。