HTTP全リクエストのうち、4XXエラーが一定の割合を超えたらアラートを上げたいことがあると思います。

ただ、深夜帯などでリクエスト数そのものが少ない場合は4XXエラーがそれほど多くなくても全体に対する割合が増えてアラートになってしまうので、このような時はアラートを上げたくない場合、Datadogでは複合条件モニターを設定することで要求が満たせます。

設定方法は以下の通りです。

1. まずHTTP全リクエスト数を監視する監視項目を定義する

 ・ ここでは5分間のリクエスト数合計が1,200を上回ったらエラーとする

QUERY: sum(last_5m):sum:aws.applicationelb.request_count{aws_account:xxxxxxxxxxxx} by {name,region}.as_count().rollup(avg, 300) >= 1200

 ・ エラー時に通知は行わない(後述で定義する複合条件モニター監視項目にて設定)

2. 次に全リクエストに対する4XXエラーの割合を監視する監視項目を定義する

 ・ ここでは4XXエラーの割合がリクエスト全体の30%を上回ったらエラーとする

QUERY: sum(last_5m):sum:aws.applicationelb.httpcode_target_4xx{aws_account:xxxxxxxxxxxx} by {name,region}.as_count() / sum:aws.applicationelb.request_count{aws_account:xxxxxxxxxxxx} by {name,region}.as_count() * 100 >= 30

 ・ エラー時に通知は行わない(後述で定義する複合条件モニター監視項目にて設定)

3. 最後に上記2つの監視項目をAND条件で結び、両方ともエラーの時(つまり、5分間のリクエスト数合計が1,200を超え、かつ4XXエラーの割合が全体の30%を上回った場合)にアラートを上げる監視項目を定義する

QUERY: AAAAAAAA && BBBBBBBB

(*) AAAAAAAAは1.で作成した監視項目のID、BBBBBBBBは2.で作成した監視項目のID

参考資料

複合条件モニター – Datadog