前提
Datadogで以下のようにMonitorを定義したとする。
「Lambdaの実行でエラーが発生した場合アラートを発する」
alertの条件は以下のように定義した。
Query:
sum(last_1h):aws.lambda.errors{functionname:my-function}.as_count() > 0
つまり、
- Alert threshold:
> 0- Evaluation Details: Evaluate the
sumof the query over thelast 1 hour
発生する問題
- 1:00pm: Lambda実行失敗。エラー発生
- 1:01pm: Datadogがevaluateする(
evaluation window=12:01-1:01) -> アラートが発生する。 - 1:15pm: Lambdaのバグ修正、Lambdaをリトライして実行が成功。
- 1:20pm: DatadogのUIでモニターを
Resolveする。 - 1:21pm: Datadogがevaluateする(
evaluation window=12:21-1:21) -> アラートが再び発生する。
つまり、アラートをResolveした直後に、その直前のエラーが理由でアラートが再び発されてしまう。
解決方法
1:20pmの時点で、Resovleではなく、1時間 Mute とかにすべきなんだろうか。
あるいは、sum(last_1h)をsum(last_5m)にすれば、この場合に限っては解決しそう。
あるいは、1:21pmの時点でのevaluation windowを1:15-1:21にできたらいいのだが。
あるいは、evaluation frequency を1時間に1回にすれば良い。
Ref.