
CloudWatch Alarmの条件(しきい値、評価期間)を変更した時のアラーム状態の変更のされ方を確認してみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、CX事業本部 IoT事業部の若槻です。
最近Amazon CloudWatch Alarmのアラーム条件を管理者が変更できる機能を実装する機会があったのですが、その際に「条件変更時にアラーム状態はどのように変わるのか?」という質問がありました。
そこで今回は、CloudWatch Alarmのアラーム条件(しきい値、評価期間)を変更した時のアラーム状態の変更のされ方を確認してみました。
確認パターン
今回確認するアラームのパラメーターは次の2つです。
- しきい値(Threshold)
 - 評価期間(EvaluationPeriods)
 
これらパラメーターを次の4パターンで変更してみます。
- 1.OK状態のアラームのしきい値をALARM状態になるように変更
 - 
2.ALARM状態のアラームのしきい値をOK状態になるように変更

 - 
3.OK状態のアラームの評価期間をALARM状態になるように変更

 - 
4.ALARM状態のアラームの評価期間をOK状態になるように変更

 
以上の変更により、ステートが変更されるのか?又はされないのか?、確認してみます。
確認してみた
1.OK状態のアラームのしきい値をALARM状態になるように変更
変更前のアラームの様子です。しきい値(0以下)の条件を満たしていないため現在はOK状態となっています。

次のようにしきい値をALARM状態となるであろう30に変更しました。
$  aws cloudwatch describe-alarms --alarm-names testAlarm
//一部プロパティ省略
{
    "MetricAlarms": [
        {
            "AlarmName": "testAlarm",
            "StateValue": "OK",
            "MetricName": "temperature",
            "Namespace": "StateMachinePublish",
            "Statistic": "Average",
            "Period": 60,
            "EvaluationPeriods": 30,
            "DatapointsToAlarm": 30,
-            "Threshold": 0.0,
+            "Threshold": 30.0,
            "ComparisonOperator": "LessThanThreshold",
            "TreatMissingData": "missing"
        }
    ],
}
するとステータスは直ちにALARM状態に変更されました。

2.ALARM状態のアラームのしきい値をOK状態になるように変更
変更前のアラームの様子です。しきい値(30以下)の条件を満たしているため現在はALARM状態となっています。

次のようにしきい値をOK状態となるであろう0に変更しました。
$  aws cloudwatch describe-alarms --alarm-names testAlarm
//一部プロパティ省略
{
    "MetricAlarms": [
        {
            "AlarmName": "testAlarm",
            "StateValue": "ALARM",
            "MetricName": "temperature",
            "Namespace": "StateMachinePublish",
            "Statistic": "Average",
            "Period": 60,
            "EvaluationPeriods": 30,
            "DatapointsToAlarm": 30,
-            "Threshold": 30.0,
+            "Threshold": 0.0,
            "ComparisonOperator": "LessThanThreshold",
            "TreatMissingData": "missing"
        }
    ],
}
するとステータスは直ちにOK状態に変更されました。

3.OK状態のアラームの評価期間をALARM状態になるように変更
変更前のアラームの様子です。 現在はしきい値(30)を下回っていますが、評価期間(120分)の条件を満たしていないためOK状態となっています。

次のように評価期間としてはALARMとなるであろう期間(30分)に変更しました。
$  aws cloudwatch describe-alarms --alarm-names testAlarm
//一部プロパティ省略
{
    "MetricAlarms": [
        {
            "AlarmName": "testAlarm",
            "StateValue": "OK",
            "MetricName": "temperature",
            "Namespace": "StateMachinePublish",
            "Statistic": "Average",
            "Period": 60,
+            "EvaluationPeriods": 30,
-            "EvaluationPeriods": 120,
+            "DatapointsToAlarm": 30,
-            "DatapointsToAlarm": 120,
            "Threshold": 30.0,
            "ComparisonOperator": "LessThanThreshold",
            "TreatMissingData": "missing"
        }
    ],
}
数分置くとステータスはALARM状態へ変更されました。

4.ALARM状態のアラームの評価期間をOK状態になるように変更
変更前のアラームの様子です。現在はしきい値(30)を下回り、また評価期間(5分)の条件を満たしているためALARM状態となっています。

次のように評価期間としてはOKとなるであろう期間(30分)に変更しました。
$  aws cloudwatch describe-alarms --alarm-names testAlarm
//一部プロパティ省略
{
    "MetricAlarms": [
        {
            "AlarmName": "testAlarm",
            "StateValue": "ALARM",
            "MetricName": "temperature",
            "Namespace": "StateMachinePublish",
            "Statistic": "Average",
            "Period": 60,
-            "EvaluationPeriods": 5,
+            "EvaluationPeriods": 30,
-            "DatapointsToAlarm": 5,
+            "DatapointsToAlarm": 30,
            "Threshold": 30.0,
            "ComparisonOperator": "LessThanThreshold",
            "TreatMissingData": "missing"
        }
    ],
}
数分置くとステータスはOK状態へ変更されました。

また補足ですがその後時間経過により条件を満たすと再度ALARM状態に変更されました。

まとめ
確認の結果をまとめると次のような結果となりました。
| 変更する条件 | 期待している状態変更 | 結果 | |
|---|---|---|---|
| 1. | しきい値 | OK->ALARM | ALARMに変更された | 
| 2. | しきい値 | ALARM->OK | OKに変更された | 
| 3. | 評価期間 | OK->ALARM | ALARMに変更された | 
| 4. | 評価期間 | ALARM->OK | OKに変更された | 
すべての変更パターンで期待された変更結果となりました。
以上







