Amazon Managed GrafanaのアラートをSNS経由で通知してみる

2021.09.24

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは。大阪オフィスの林です。

Amazon Managed Grafanaでは、CPUなどのリソースがしきい値を超えた場合などにSNSを呼び出してSNS経由でアラートの通知を行うことも出来ます。今回の検証では下記で作成したマルチアカウントのモニタリング環境を使ってAmazon Managed Grafanaで検知したアラートをSNS経由で通知してみたいと思います。

やってみた

Amazon Managed Grafanaの通知チャネルを有効化する

作成済みのAmazon Managed Grafanaワークスペースを選択します。

「通知チャネル」タブから「Amazon SNS」にチェックを入れ「サービスマネージド型のポリシーを有効化」を選択します。

「Amazon SNS」がアタッチ済みとなりました。

Amazon Managed Grafanaで使用されているIAMロールを確認してみます。

SNSのPublishを許可するポリシーが割り当たっていました。リソースにarn:aws:sns:*:xxxxxxxxxxxx:grafana*とある通り、「サービスマネージド型のポリシーを有効化」でSNSアタッチした場合、grafanaの文字列で始まるSNSのリソース(トピック)を作成する必要があるので注意です。※独自でIAMロールやIAMポリシーを作成している場合はこの限りではありません。

SNSを設定する

次に通知用のSNSトピックを作成していきます。SNSのダッシュボードから「トピック」-「トピックの作成」を選択します。

今回の検証では「スタンダード」を選択し、grafanaから始まる任意の名前を入力します。

「トピックの作成」を選択します。

次に通知先のメールアドレスを登録していきます。「サブスクリプションの作成」を選択します。

作成したトピックARNに前述したトピックのARNを選択、プロトコルEメールエンドポイントにメールアドレスを入力し、「サブスクリプションの作成」を選択します。

指定したメールアドレスに承諾メールが届くのでConfirm subscriptionをクリックし、承諾します。

サブスクリプションのステータスが「確認済み」となったことを確認します。

Grafanaの設定

次にGrafana側の設定をしていきます。左メニューのベルマークから「Notification channels」を選択します。

「Add channel」を選択します。

下記を参考に必要なパラメータを入力します。

パラメータ
設定値
Name 任意の名前を入力
Type AWS SNS
Topic 先程作成したSNS TopicのARN
Auth Provider Workspace IAM Role

必要に応じて「Notification settings」を設定し「Save」を選択します。詳しくは公式ドキュメントを参照ください。

パラメータ
意味
備考
Default この通知をすべてのアラートに使用するかを指定します
Include image 画像をキャプチャして通知に含めるかを指定します AWS SNSの通知では使用できません
Disable Resolve Message アラート解決時のメッセージを無効にします
Send reminders リマインダーが送信される頻度を指定します

「Notification updaetd」と表示されたことを確認します。

アラートを設定していきます。アラートを設定したダッシュボードから「Edit」を選択します。

「Alert」タブを選択し、「Create Alert」を選択します。

Conditionでアラート発報の条件となる設定を入力し、error handlingで必要に応じてデータなしの状態の取り扱いなどを設定します。(今回の検証では動作確認が目的のためCPUの平均使用率が「0以上」でアラートとなるように設定しています。)

画面をスクロールし「Send to」に先ほど作成したchannel(test-sns)を指定し、Messageに任意のメッセージを入力します。(今回の検証ではMessageの内容は懲りませんが、実際にはEC2のIDや一意の識別子となる情報を付加すると良いでしょう)

「Save」します。

「Apply」します。

ハートマークが表示されていればアラートの設定が出来ています。

設定されているアラートは左メニューのベルマークから「Alert rules」を選択することで確認出来ます。

先程追加したアラートのルールが表示されています。データ収集中のためNO DATAとなっています。

暫くすると「OK」となりました。

しきい値をCPUの平均使用率0以上としていますので少しするとSNSからメール通知が来ました。

まとめ

通知を1つのSNSに集約できるので、マルチアカウントやマルチリージョンの通知元を集約したいという要件には採用の価値があるのかもしれません。所見ではどこで何を設定すれば良いのか分からないことも多々あると思いますので、このエントリがどなたかの参考になりましたら幸いです。

以上、大阪オフィスの林がお送りしました!