CloudWatchアラームをSNS経由でEメールアドレスに通知する

CloudWatchアラームをSNS経由でEメールアドレスに通知する

Clock Icon2024.11.19

はじめに

こんにちは。AWS事業本部コンサルティング部に所属している和田響です。

今回は、CloudWatchアラームの通知先の中で最もオーソドックスだと思われる、SNS経由でEメールアドレスに通知する方法について記載します。

概要

今回はEC2インスタンスのCPU使用率を監視し、閾値を超えた場合にCloudWatchアラームを発生させ、SNS経由でEメールアドレスに送信します。
Untitled - 2024-11-18T205902.855.png

やってみる

SNSトピックの作成

まずはCloudWatchアラームの通知先である、SNSトピックを作成します。

「Simple Notification Service」のコンソールを開きます。
スクリーンショット 2024-11-18 21.04.31.png

サイドタブから「トピック」をクリックします。
スクリーンショット 2024-11-18 21.05.57.png

「トピックの作成」をクリックします。
スクリーンショット 2024-11-18 21.07.01.png

タイプには「スタンダード」を選択し、名前には任意の文字列(今回はcloudWatch-alerm-topic)を記載します。
※「FIFO (先入れ先出し、先出し)」はSNSのサブスクリプション(通知先)がSQSの場合にのみ使用できます。
スクリーンショット 2024-11-18 21.09.07.png

その他はデフォルト設定のままで「トピックの作成」をクリックします。
スクリーンショット 2024-11-18 21.13.34.png

補足

今回は特に設定しませんでしたが、SNSトピックは以下の設定も可能です。

  • 暗号化
    • サーバー側の暗号化を有効にできます。(転送中はデフォルトで暗号化されます)
  • アクセスポリシー
    • SNSトピックにアクセスできるユーザやリソースを定義できます。
  • アーカイブポリシー
    • メッセージ保持期間を設定できます。(デフォルトではメッセージは保持されません)
  • 配信ステータスのログ記録
    • CloudWatch Logsへのログ配信を設定できます。(SQSへの転送のみサポートしています)
  • タグ
    • タグをKey:Value形式で指定できます。
  • アクティブトレース
    • AWS X-Rayのアクティブトレースを有効にできます。

サブスクリプションの設定

続いてサブスクリプションの設定を行います。

先ほど作成したSNSトピックを開き「サブスクリプションの作成」をクリックします。
スクリーンショット 2024-11-18 21.23.54.png

プロトコルに「E メール」を選択し、エンドポイントには通知先のEメールアドレスを記載し、「サブスクリプションの作成」をクリックします。
スクリーンショット 2024-11-18 21.27.38.png

エンドポイントに指定したEメールアドレスに承認依頼のメールが来ているはずなので、「Confirm subscription」をクリックします。
スクリーンショット 2024-11-18 21.47.41.png

「Subscription confirmed!」の表示がされれば完了です。
※なんとなくクリックしてしまいそうな見た目ですが、「click here to unsubscribe.」はサブスクリプションを解除するリンクのため、勢いでクリックしないようにしましょう。
スクリーンショット 2024-11-18 21.49.54.png

補足

今回はプロトコルとして「E メール」を選択しましたが、それ以外にも以下のプロトコルをサポートしています。

  • HTTP/HTTPS
  • E メール/E メール -JSON
  • Amazon Data Firehose
  • Amazon SQS
  • AWS Lambda
  • プラットフォームアプリケーションエンドポイント
  • SMS

参照:https://docs.aws.amazon.com/ja_jp/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html

また、今回は設定しませんでしたが以下のオプションも設定可能です。

  • サブスクリプションフィルターポリシー
    • サブスクライバーがメッセージを受信できる条件を定義できます。
  • Redrive ポリシー (デッドレターキュー)
    • 送信できなかったメッセージをデッドレターキューに送信するか選択できます。

CloudWatchアラームの設定

続いてCloudWatchアラームの設定を行っていきます。
今回は事前に用意したEC2インスタンス(CloudWatch-Alerm-test)のCPU使用率に対して閾値を設定したアラームを作成します。

「CloudWatch」のコンソールを開きます。
スクリーンショット 2024-11-18 21.56.02.png

サイドタブから「すべてのアラーム」をクリックします。
スクリーンショット 2024-11-18 21.59.32.png

「メトリクスの選択」をクリックし、
スクリーンショット 2024-11-18 22.01.01.png

「EC2」を選択し、
スクリーンショット 2024-11-18 22.01.45.png

「インスタンス別メトリクス」選択し、
スクリーンショット 2024-11-18 22.04.30.png

監視対象のEC2インスタンス(今回はCloudWatch-Alerm-test)の「CPUUtilization」を選択し、「メトリクスの選択」をクリックします。
※CPU使用率はデフォルトで取得可能なメトリクスですが、メモリ利用率やディスク空き容量などCloudWatchエージェントの設定が必要なメトリクスも存在します。
スクリーンショット 2024-11-18 22.06.08.png

今回は必ずアラートを発生させたいため、「CPU使用率が1%より大きい」ことを指定し、「次へ」をクリックします。
(要件に合わせて適切な数字を入力してください)
スクリーンショット 2024-11-18 22.10.40.png

「既存の SNS トピックを選択」にチェックを入れ、通知の送信先となるSNSトピック(今回はcloudWatch-alerm-topic)を選択します。
スクリーンショット 2024-11-18 22.15.14.png

その他の設定はデフォルトのまま「次へ」をクリックします。
スクリーンショット 2024-11-18 22.17.55.png

「アラーム名」および「アラームの説明」を入力し、「次へ」をクリックします。
※「アラーム名」は後から変更できませんが、「アラームの説明」は後から変更可能です。
スクリーンショット 2024-11-18 22.20.04.png

内容を確認し、「アラームの作成」をクリックします。
スクリーンショット 2024-11-18 22.22.56.png

少し待つと状態が「アラーム状態」になっていました。
スクリーンショット 2024-11-18 22.26.22.png

SNSのサブスクリプションに設定したEメールアドレスにも以下のようなアラートメールが送信されていました。
スクリーンショット 2024-11-18 22.28.02.png

補足

統計方法や期間もカスタマイズ可能です。
今回はデフォルトの「5分間の平均」としていましたが、統計方法は「平均」に加えて「合計」「最大」「最小」などさまざまな条件をサポートしています。
期間は最小10秒から設定可能です。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html

CloudWatchアラームの変更

ここまでで、CloudWatchアラームの設定は完了ですが、このままだとアラート状態が続いてしまうので、閾値を変更します。
対象のアラームを選択し、「アクション」-「編集」をクリックします。
スクリーンショット 2024-11-18 22.30.19.png

閾値を変更し「次へ」をクリックします。今回は80%としています。
スクリーンショット 2024-11-18 22.30.34.png

変更内容を確認し「アラームの更新」をクリックします。
スクリーンショット 2024-11-18 22.30.47.png

最後に

今回はCloudWatchアラームの設定方法について記載してみました。
ポチポチと数分作業するだけでアラームを設定できて、CloudWatchは非常に便利なサービスだと再認識できました。

オブザーバビリティ(可観測性)という言葉が注目される中で、CloudWatchのさらに利用頻度は高まっていく気がしますね。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.