こんにちは、技術1課の小倉です。
2020/3/4にアップデートがあり、Amazon CloudWatch アラームで複数のアラームを組み合わせることが可能になりました!
Amazon CloudWatch で複数のアラームを組み合わせ可能に
例えばEC2でCPU使用率とディスクの読み書きのCloudWatch アラームを設定して、両方ともしきい値を超えたときにSNSからアラートを通知できるようになります。
EC2のCPU使用率を監視している時、CPU使用率が高い状態(使用率が100%で処理できない状態ではなく、95%付近で処理を続けている状態)は、異常な状態ではなく、クラウドから提供されているリソースを有効に使用していると私は考えています。CPU使用率だけで監視をしている場合はしきい値を超えたらアラート通知がきてしまいますが、[CPU使用率] + [別の要素] を組み合わせることで、異常ではないCPU使用率のアラート通知を軽減できる可能性があります。
[別の要素]の具体例として、EC2でWebサーバを稼働させていて、[CPU使用率] + [ネットワーク入力(EC2に入ってくる通信量)]で複数アラートを設定したとします。[ネットワーク入力]はクライアントからのアクセスが多ければ増えてきますので、[CPU使用率] + [ネットワーク入力]でどちらもしきい値を超えていればクライアントからの通信に影響が出る可能性がありますので通知をします。もしこのWebサーバが夜間に日次バッチ処理をしていてCPU使用率が高くなった時は、サーバ単体の処理のため、[ネットワーク入力]のしきい値は超えず、通知はこなくなり不要な通知を減らすことができます。
以下のサイトに記載がありますが、2020/3/10現在、複数アラームのアクションで指定できるのはSNSのみです。
Creating a Composite Alarm (英語サイト)
CloudWatch アラームとは
CloudWatch アラームを説明するためにまずはCloudWatch メトリクスを説明します。
CloudWatch メトリクスとは一定の間隔で取得するシステムのパフォーマンスに関するデータです。例えばEC2のCPU使用率であれば、なにも設定することなくCloudWatch メトリクスのコンソール画面で5分おきのCPU使用率をグラフで確認することができます。
また、EC2はCPU使用率以外にも取得しているデータはあり、他のAWSサービスでは別のデータを取得しています。
参考 : インスタンスメトリクス
CloudWatch アラームは取得したメトリクスにしきい値を設定し、しきい値を超えたら通知などを行うことができる機能です。こちらもEC2のCPU使用率を例であげると、CPU使用率がxx%を超えたらSNSでメール通知をするという設定ができます(画像はCPU使用率が10%を超えたらアラーム状態になる設定)。
設定手順
今回のアップデートでは、CloudWatch アラームの設定条件で複数アラームを組み合わせることが可能になりました。設定手順は以下です。
- 複数アラームの設定に必要なCloudWatch アラームを2つ作ります(今回はEC2のCPU使用率とネットワーク入力)。
CloudWatchのコンソールから左の[アラーム]をクリックし、[アラームの作成]をクリックします。
メトリクスの条件の指定で[メトリクスの選択]をクリックします。
メトリクスの選択で、[EC2] - [インスタンスタイプ別メトリクス] で対象EC2のCPUUtilizationにチェックを入れて、[メトリクスの選択]をクリックします。
メトリクスと条件の指定の画面で、下にスクロールし、しきい値を入力して[次へ]をクリックします(画像はCPU使用率が10%より大きくなったらアラーム状態にする設定)。
アクションの設定画面で通知の[削除]をクリックして設定を消し、[次へ]をクリックします。
名前と説明の追加の画面で、[アラーム名]と[アラームの説明]を入力して、[次へ]をクリックします。
プレビューと作成の画面で設定内容を確認して、[アラームの作成]をクリックします。
CPU使用率のアラーム作成と同様の手順で、メトリクス [NetworkIn]、しきい値 [50000000]で設定します。
設定後の状態です。
- 作成した2つアラームを使用して複合アラームの設定をします。
先ほど作成した2つのアラームにチェックを入れ、[複合アラームの作成]をクリックします。
複合アラームの条件を指定の画面で、条件をANDに変更して[次へ]をクリックします。
ANDは、CPU使用率とネットワーク入力の両方がアラーム状態になったら複合アラームもアラーム状態になります。ORだとどちらか1つがアラーム状態であれば、複合アラームはアラーム状態になります。
アクションの設定画面で、通知の設定をします。既存でSNSの設定があれば、[既存のSNSトピックを選択]を選択し、なければ、[新しいトピックの作成]を選択して通知先の設定をします。設定が終わったら、下に画面をスクロールして[次へ]をクリックします。
名前と説明の追加の画面で、[アラーム名]と[アラームの説明]を入力して、[次へ]をクリックします。
プレビューと作成の画面で設定内容を確認して、[複合アラームの作成]をクリックします。
設定後の状態です。
試しにCPU使用率を上げてみます( 負荷をかけるため yes > /dev/null &
をEC2上で10回実行)。
CPU使用率はアラーム状態になりましたが、複合アラームはOKのままです。
この状態でさらにネットワーク入力に負荷をかけます(数GBのファイルをEC2にアップロード)。
CPU使用率とネットワーク入力のしきい値を超えたため、複合アラームもアラート状態になりました。
アクションで設定した宛先にもメールが届いています。
まとめ
複数のアラームを組み合わせることで、不要なアラート通知を減らすことができるかもしれません。現在CloudWatch アラームを使っている方、これからCloudWatch アラームを使い始める方は複数アラームの導入を検討してみてはいかがでしょうか。
また、本ブログの内容は2020/3/11(水) 12:00よりYouTube Liveで配信される「30分でわかる AWS UPDATE!」でも取り上げる予定ですので、ぜひご覧ください!
https://www.youtube.com/watch?v=5gMsg1r0Z9E&feature=emb_title
小倉 大(記事一覧)
アプリケーションサービス部ラーニングエクスペリエンス課 札幌在住
AWSトレーニングの講師をしています。
最近は5歳の息子と遊ぶのが楽しいです!
Twitter: @MasaruOgura