cloudwatchのアラームで設定している期間の時間より短い時間で通知されることがあったので気になったので調べてみました
例えば以下のような設定のアラームの場合に、前回のアラームから10分後に再度アラームが発生していることがありました
期間: 30分間
統計: 平均値
閾値: 30分内の1データポイントの平均値 < 10
アラームを実行するデータポイント: 1/1
そもそも公式によるとアラームは期間が5分などでも、アラームの評価自体は1分間毎に行われるとのこと
期間が 1 分以上の場合、アラームは 1 分ごとに評価され、評価は [期間] と [評価期間] で定義されている時間枠に基づいて行われます。例えば、[期間] が 5 分 (300 秒) で、[評価期間] が 1 の場合、5 分終了時に、アラームは 1 分~5 分のデータに基づいて評価されます。続いて、6 分終了時に、2 分~6 分のデータに基づいてアラームが評価されます。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarm-evaluation
なんとなく1枚目のイメージで使用していましたが、実際には2枚目のほうが正しいぽいです
1分毎のアラーム評価は期間によって変わるのか
期間が 1 分以上の場合、アラームは 1 分ごとに評価され、評価は [期間] と [評価期間] で定義されている時間枠に基づいて行われます。
期間がどの程度であればアラームが1分毎に評価されるかが公式のページで見つからなかったので試してみました
期間を変更して数分で閾値を超えたり、下回るようにしてみました
5分毎
5分以内でアラームが発生したので、1分毎に評価されていそうです
設定
期間: 5分間
統計: 平均値
閾値: 5分内の1データポイントの平均値 > 2
アラームを実行するデータポイント: 1/1
アクション:アラーム状態のとき、トピックにメッセージを送信します
1時間毎
1時間でも数分毎にアラームの発生が確認できました
設定
期間: 1時間
統計: 平均値
閾値: 1時間の1データポイントの平均値 > 2
アラームを実行するデータポイント: 1/1
アクション:アラーム状態のとき、トピックにメッセージを送信します
1日毎
1日でも数分毎にアラームの発生が確認できました
設定
期間: 1日
統計: 平均値
閾値:1日の1データポイントの平均値 > 2
アラームを実行するデータポイント: 1/1
アクション:アラーム状態のとき、トピックにメッセージを送信します
1日以上は実行していませんが、思ったより長い期間でもアラームは1分毎に評価してくれるようです
1時間以上からはアラームの評価間隔も1分から変わると思っていました
アラーム実行ポイントが1/1ではない場合
cloudwatchのアラームを設定する際にアラーム実行ポイントを2/3
などと設定することで、3回中2回閾値を超えていた場合アラームとすることができます
この場合はアラームの評価がどうなるのか実施してみました
なんとなく1枚目かと思っていましたが、公式の説明を踏まえると2枚目のようになる?
1分毎に閾値を超える、下回る状態を繰り返してみた結果、2分ごとにアラームが発生したので、予想と同じ評価のされ方をしているようです
設定
期間: 1分間
統計: 合計
閾値:5分内の3データポイントの合計値 > 2
アラームを実行するデータポイント: 3/5
アクション:アラーム状態のとき、トピックにメッセージを送信します
おわり
アラームの設定値などによっては想定よりも短い期間でアラームが来る理由がわかりました
間違っているところがあれば教えてください