ちょっと話題の記事

CloudWatch 複合アラームが利用可能になりました!!

2020.03.05

園部です。

CloudWatch アラームで複数のアラームの状態を条件にする複合アラームが可能となりました!

Amazon CloudWatch now allows you to combine multiple alarms

複合条件などについてはドキュメントに記載がありますのでご確認ください。

Creating a Composite Alarm

やってみる

前置き

今回は、以下の内容でやってみます。

  • アラーム
    • ① EC2 / CPUUtilization
    • ② EC2 / EBSReadOps
  • 複合アラーム
    • アラーム① AND アラーム②
    • 上記条件がともに 「アラーム状態」になったら SNS でメール通知

アラーム作成

アラーム① CPUUtilization

CloudWatch >>> アラーム >>> アラームの作成

検証のため、閾値は極端な値を指定しています。

複合条件とするアラームではアクションは設定しません。

名前を付けて保存します。

一つ目が完成です。

アラーム② EBSReadOps

1つ目と同じ要領で作成します。

複合アラーム

CloudWatch >>> アラーム >>> 条件とするアラームを選択 >>> 複合アラームの作成

アラームの追加や条件を記述することが出来ます。今回は、条件を OR から AND へ変更します。

別のアラームを追加することが可能です。 複合アラームを作成している アカウント / リージョンにある アラームが一覧を表示されます。

※ クロスリージョンやクロスアカウント設定をすれば選択肢に出るのかは確認が出来ていません。ご存知の方がいれば、是非コメントにてお教えください!

AND, OR, NOT を利用して条件文を編集することが可能です。

現時点では SNS へのアクションのみサポートされています。 AutoScaling や EC2 アクションは表示されません。

名前をつけて、保存します。

作成出来ました。

アラーム発生

今回作成した複合アラームの条件は、二つのアラームが 「アラーム状態」 となった場合となります。
まず EC2 に負荷をかけて、CPUUtilization だけ 「アラーム状態」 にしてみます。

yes > /dev/null & で CPU に負荷をかけます。

アラーム①の状態は変化しましたが、複合アラームは条件を満たしていない(アラーム②がOK)ので、変化はありません。

次は、二つのアラームがともに 「アラーム状態」 となるようにしてみます。

メール通知が来ました。

それでは、アラームの詳細を確認していきます。

タイムラインで赤くなっている「アラーム状態」の部分を選択します。

条件とした子アラームやアクションの情報も合わせて変化します。(ここでは二つが「アラーム状態」になったことで、複合アラームが「アラーム状態」となったことがわかります。

履歴で、意図した動作が行われたことが確認できます。

お片付け

不要となったアラームを削除していきます。

CloudWatch >>> アラーム >>> 全アラームを選択 >>> Actions >>> 削除

エラーが表示されます!!

アラームを削除できません Cannot delete readops,cpu as there are composite alarm(s) depending on them.

(考えてみれば Snapshot と同じで当然ではありますが、、)複合アラームを先に消さないと NG ですよ。というメッセージのようです。改めて、複合アラームを先に削除した上で、条件とした子アラームと削除すると問題なく削除できました。

さいごに

メトリクスとアラームが 1:1 の場合、単一アラームだけでは正確なサービス状況・影響を把握することが難しいケースがありました。 Metric Math を使うなどやり方はあるかもしれませんが、管理面で複雑になる可能性もあります。また複合的に見ることで、より多くの情報や状況を伝えることが可能です。設定もシンプルなため、活躍するケースは多いのではないでしょうか。

個人的には久しぶりに CloudWatch アラームの画面を細かく見たこともあり、新しい画面だとタイムラインがあったり リッチな UI になっていて 「お?おおぉ!」 と思いました!!