前提
Datadogで以下のようにMonitorを定義したとする。
「Lambdaの実行でエラーが発生した場合アラートを発する」
alertの条件は以下のように定義した。
Query:
sum(last_1h):aws.lambda.errors{functionname:my-function}.as_count() > 0
つまり、
- Alert threshold:
> 0
- Evaluation Details: Evaluate the
sum
of 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.