AWSからのアラート通知をもっと簡単に!AWS User Notificationsで通知を集約管理する

AWSでの通知設定といえば、CloudWatch AlarmやAWS EventBridgeとAWS SNSの組み合わせが定番ですね。
AlarmやEventBridgeのステータスに変動があれば、AWS SNSに登録したメールアドレスに通知するというものです。
長らくこの方法で多くのシステムを作ってきましたが、運用フェーズに入って通知先の設定変更やアラートの追加、不要アラートの削減など、通知を再整理したくなった時に、各CloudWatch Alarm設定やEventBridgeを探さなくてはいけなくてとてつもなく面倒でした。
何かよい集約サービスはないものかと思っていたら、AWSにすでにAWS User Notificationsというサービス存在したので使い勝手を確認してみました。

AWS User Notificationsとは?

AWS User Notificationsとは、AWS Health イベント、Amazon CloudWatch アラーム、EC2 インスタンスの状態変化などの通知を集約管理して、一元的に設置アップができるサービスです。
通知可能な情報として、以下が対応しています。
  • CloudWatch Alarm
  • EC2の状態変化
  • AWS Health(AWS障害/メンテナンス等の情報)
  • 請求情報
上記の情報をEメール、AWSコンソールモバイルアプリケーション、チャットチャネル(Slack/Temas)に通知することが可能です
今まで、CloudWatch AlarmやAWS EventBridgeとAWS SNSで頑張って作成していたものが、AWS User Notificationsにて簡単に設定・管理できるようになっ多イメージです。

構成イメージ


設定方法

通知ハブの設定

通知ハブは、通知データの保存や処理を行るリージョンです。
基本的には東京リージョンを選択しておけばOKです。
大阪リージョンも使っている様であれば一緒に設定しておきましょう。
最大3つまで設定できます。

配信チャネルの設定

①通知先となるメールアドレスやモバイルデバイス、チャットチャネルを登録します。
この後の通知設定では、ここに登録した配信先を選択することになります。
今回はメールアドレスを登録してみますので「Eメールの追加」を押します。

②メールアドレスと名前を入力して、「Eメールの追加」を押します。 ※名前は日本語に非対応のようなので、ローマ字で入力することになります。
③作成が完了すると検証ステータスが保留中になります。
④登録したメールアドレスに認証メールが届くので「Verify email」を押しましょう。 ※12時間で失効するようなので、届いたらすぐに承認しましょう。
承認ボタンを押すと以下のような画面に遷移します。

⑤配信チャネルでも検証ステータスが「アクティブ」になります。

通知設定

CloudWatch Alarmの通知設定を一括で行ってみます。

①通知センターの初期画面にあるQuick Setupから「通知設定を作成」で始めましょう。
ここから開始するのが一番簡単です。


②名前を適当に入力して、リージョンは東京リージョン、アラームは通知したいCloudWatch Alarmのみをチェックボックスで選択できます。
Eメールに配信チャネル設定で作成したメールアドレスを選択します。


これで通知設定の作成は完了です。
AWS Health等の別のイベントも通知したい場合は同様に通知設定を作成しましょう。

動作確認

本当に通知が飛んでくるか確認するためにCloudWatch Alaemをアラート状態にしてみます。
以下のコマンドで強制的にアラート状態へ変更してみます。
aws cloudwatch set-alarm-state --alarm-name "<アラーム名>" --state-value ALARM --state-reason "alarmtest"
無事にアラートメールが届きました。
何だったらAWS SNSで飛んでくるアラートより見やすいかもしれません。


また、AWS User Notificationsはメール集約機能も備わっており、デフォルトだと5分間に発生したアラートを1つのメールに集約してくれます。
障害発生時には、仕掛けている大量の監視がアラート発報を初めてメールがよくわからない状態になることも多いので便利な機能です。
設定で集約させないこともできますし、最大では12時間分を集約して通知するようにすることもできますので、システムの重要度に合わせて調整が可能です。

コンソール通知

AWS User Notificationsでは、通知設定を行うことでうれしい副作用があります。
それがコンソール通知機能です。
AWSマネジメントコンソールの右上にあるベルマークを押すことで、発生した通知イベントを簡単に確認することができます。


例えば、コンソールでの作業をしていて、メールを見ていなかったり、見落としていた場合にもこの通知ゾーンに同じようなアラート情報がお知らせされるようになるので、見落としの防止につながります。

AWSマネージド通知

その他の通知機能として、「AWSマネージド通知」があります。
AWSアカウントのセキュリティ関連の通知、サービス障害、利用アカウント固有の障害、利用料等の通知もこのサービスで一元的に管理が可能です。


例えば、「Account-Specific Issues」に通知先として、配置チャネルを登録しておけば、アカウント固有の障害やメンテナンス情報を受け取ることができます。


このサービスを使うことで、「あの通知がほしい。」「この通知はいらない」みたいな取捨選択が簡単になりますね。

まとめ

長らく、AWS SNSを使ってアラート通知を頑張っていましたが、複雑なシステムほど監視項目が多くなり、通知設定管理が煩雑でした。
利用者からの連絡でシステム障害が判明してしまい、「なんで監視できていないんだ!」みたいなことも起こりうるので、何が監視できているのか、どこに通知が飛ぶようになっているのかは見やすくないといけませんね。
今度から監視通知は、AWS User Notificationsで設定したほうが便利そうかもと思いました。