AWS User Notifications から Amazon CloudWatch のアラートを受け取って通知させる

AWS

2024.9.13

Topics

はじめに

こんにちは、Paseri です。

AWS にはリソースの状況を通知する仕組みがいくつもあります。
そんな中でも Amazon SNS を利用している方も少なくないのではないでしょうか?
ですがこの方法では AWS Lambda を利用してデータを加工したりとなかなか手間です。

なので今回は、お手軽簡単に AWS User Notifications から「Amazon CloudWatch アラートを通知する方法」をご紹介します!

AWS User Notifications とは?

従来まで行っていた Amazon EventBridge から Amazon SNS の流れを複数のリージョンに対して一元管理してくれるサービスです。

AWS ユーザー通知を使用すると、AWS Health イベント、Amazon CloudWatch アラーム、EC2 インスタンスの状態変化など、AWS のサービスからの通知を一貫したわかりやすい形式で一元的にセットアップして表示できます。
AWS 公式資料:AWS ユーザー通知

AWS User Notifications を利用することでこのような通知を受け取ることができます。

料金

AWS User Notifications に料金は発生しません。

ですが今回は Amazon CloudWatch のアラームを作成しますのでこちらに料金が発生します。
参考:料金 – Amazon CloudWatch | AWS

なにがうれしい?

  • 簡単にセットアップができる
  • 視覚的に見やすい通知を受け取ることができる
  • 通知をまとめて受け取ることができる
  • 複数のリージョンから通知を受け取ることができる

(2024年9月6日時点:通知内容は日本語ではなく英語で通知されます。 )

前提

  • Amazon SNS、Amazon EventBridge、Amazon CloudWatchに理解があること
  • Amazon EC2インスタンスの構築ができていること
  • AWS Chatbot と Slack の連携ができていること

AWS Chatbot と Slack の連携は以下の記事を参考にして頂ければと思います。
「実際の作業 ⇒ 2.AWS Chatbotの設定」に詳細な手順が説明されています。
参考記事:AWS Chatbotを使って、Slack通知をカスタマイズする | NHN テコラス Tech Blog | AWS、機械学習、IoTなどの技術ブログ

構成図

本記事では以下の構成を作成します。


Amazon EC2 のアラートを Amazon CloudWatch で検知して AWS User Notifications によって構築された Amazon EventBridge からの通知を受け取る構成になっています。
また、今回は Slack とメールに通知されるように2パターン設定し表示内容を比較したいと思います。

実装手順

0. Amazon SNS の設定

比較のための Amazon SNS を設定します。
メール通知は必要ないという方は設定しなくて大丈夫です。
サブスクリプションには自分のメールアドレスを入力しています。

1. Amazon CloudWatch アラームの設定

事前に利用する Amazon EC2 インスタンスを構築しておきます。
また、今回は CPU 稼働率の負荷テストをコマンド操作にて行うので SSH 接続できるようにしておきます。

Amazon CloudWatch の設定を行っていきます。
すべてのアラームからアラームの作成を選択。
メトリクスの選択を選択します。

検索窓に「EC2」「インスタンスID」「CPUUtilization」等を記入し CPU 稼働率を見れるメトリクスを選択します。

条件のしきい値は稼働率 30%以上でアラートが出るように設定しています。

通知に 0.で設定した Amazon SNS トピックを指定しておきます。

名前を付けてアラームを作成します。

2. AWS User Notifications の設定

AWS User Notifications から通知設定を作成していきます。

AWS User Notifications 画面から通知設定を作成を選択します。

クイックセットアップでCloudWatchを選択しておきます。
当然セットアップにない設定でも設定次第で様々な通知を受け取ることが可能です。

名前は識別できる物を入力しておきます。

イベントルールの設定

AWS User Notifications は特定のアラームではなくリージョン単位ですべてのアラームを監視してくれます。
もし特定のアラームだけを監視したい場合はタグを付けて高度なフィルターに設定することで絞ることができます。
ですが今回はデフォルトで入力されている状態のままで大丈夫です。

イベントルールには以下の値を設定します。

項目
AWS のサービスの名前 CloudWatch
イベントタイプ CloudWatch Alarm State Change
リージョン Asia Pacific (Tokyo)

リージョンを複数選択する事で複数リージョンのアラートを通知できるようになります。

集約設定

AWS User Notifications の特徴の一つに「一定時間内の複数通知をまとめて通知する」というものがあります。
この設定をすることで通知が止まらなくなる現象を抑えることができます。

今回は5分置きに通知がまとめて送信されるように設定しておきます。
他に緊急性の高いアラートは即通知されるようにすることも、反対に緊急性の無い場合は半日置きに通知するように設定することも可能です。

配信チャネル

通知先を設定することができます。
AWS User Notifications では Amazon SNS ではなく直接メールアドレスを指定します。
また、モバイル版への通知や Chatbot を通した Slack などへの通知はここで設定できます。

今回はEメールチャットチャネルを設定しておきます。
チャットチャネルには Slack と連携した AWS Chatbot チャネルを指定しています。

ここまで設定したら設定作業は終了です!

3. 通知テスト

早速通知テストを行ってみます。

Amazon EC2 インスタンスにログインし、Linux コマンドで直接 CPU に負荷をかけて Amazon CloudWatch をアラーム状態にします。

Amazon SNS の場合

Amazon SNS には集約設定が無いのですぐにアラートが通知されました。
この状態でも読めなくはないのですが、内容の把握に時間がかかってしまうと思います。

AWS User Notifications (メール)の場合

アラートの発生から5分程度経過すると通知が来ました。
内容は英語ではありますが各項目に分けられていて比較的見やすい状態で通知されました。

AWS User Notifications (Slack)の場合

メールと同じく5分後に Slack の方にも通知が表示されていました。
Slack ではパトランプが表示されているのでより視覚的にアラートだと認識しやすくなっていると思います。

Slack では通知に加え、通知から CLI コマンドや AWS Lambda 関数の実行を行うこともできます。
これによりアラート発生に即対応することもできます。

その他通知先

  • AWS User Notifications 通知センター

特に設定しなくても AWS User Notifications の通知センターには通知一覧が表示されています。
なのでコンソール上からでもアラート内容を確認することができます。

  • マネジメントコンソール上の通知

コンソール上部のベルに通知が表示されています。
とてもシンプルにアラートがあったのだと表示されていました。
選択することで AWS User Notifications の通知センターへ飛ぶことができ、詳細を確認できます。

まとめ

今回は AWS User Notifications について紹介させて頂きました。
このサービスの特徴としては、

  • メール内容を整理して可読性を高めてくれる
  • 通知頻度の調整が行える
  • 複数リージョンを跨いだ設定を一括で行える

上記の3つが挙げられると思います。

設定自体も比較的手軽に行うことができますので是非お試しください。

最後までお読み頂きありがとうございました!

テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!

Paseri

2024年新卒入社。うどん好きな初心者クラウドエンジニア。

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら