AWS Chatbot で CloudWatch アラームを Slack へ通知しよう!
*三木ジェット(神戸摩耶)
こんにちは!
株式会社ビヨンド大阪オフィスのラーメン王、ヒデです。
今回が5回目の投稿です。
前回は最近、僕が案件でも実装しました、CloudWatch アラームを Teams・Chatwork に通知することについて話しました。
今回は、AWS Chatbot で CloudWatch アラームを Slack へ通知する方法について話します。
前回のブログ記事では、AWS Lambda・Python を触って通知する面白い記事を書いたので、ぜひ興味ある方は見てくださいね!
構成図
構成図は上記になります。
CloudWatch で EC2 のメトリクスを取得して、アラームが発生すれば SNS に通知します。そして、SNS は CloudWatch から送られてきたアラームを Chatbot に送信します。
次に、Chatbot はそのアラームを Slack に送信するという流れになります。Teams・Chatwork よりも AWS Lambda を使わない構成なので、簡単に実装できます。
では、一緒に頑張って構築していきましょう!
構築手順
① SNS
①-①:SNS > トピック > トピックの作成をクリック
①-②:以下情報を指定して【トピックの作成】をクリック
● タイプ:スタンダード
● 名前:好きな名前を記入してください
①-③:正常に作成されたことを確認する
② Chatbot
②-①:Chatbot > 設定済みクライアント >【新しいクライアントを設定】をクリック
②-②:Slackを選択して【設定】をクリック
②-③:ワークスペースにサインインする
*すでにログインしたことがある場合は、以下の画面になります。
新しいワークスペースを作成する場合は、右上から【別のワークスペースを追加する】をクリックしてください。
*Slack のワークスペース URL を見つける方法は以下になります。
参考:自分が参加しているワークスペースの Slack URL を確認する
1. 参加しているワークスペース名をクリック
2. ワークスペース名の下に、参加しているワークスペースの Slack URL を確認
②-④:指定のワークスペースにログインする
②-⑤:権限を許可する
②-⑥:承認の確認後に【新しいチャネルを設定】をクリック
②-⑦:設定名を入力
*設定名は任意なものを設定してください。
*CloudWatch Logs にログを記録したい場合は、チェックを入れてください。
②-⑧:Slack チャネルを選択
*パブリック・プライベートを選択してから、チャネル名を選択してください。
②-⑨:ロールを設定
● チャネル IAM ロール
Slack のチャンネルにいる全メンバーに同じ権限を付与するロール
● ユーザーロール
Slack のチャンネルにいるメンバーそれぞれに別々の権限を付与するロール
②-⑩:チャネル IAM ロールを設定
*チャネル IAM ロールは【テンプレートを使用して IAM ロールを作成する】を選択。
*ロール名は、お好きなものを決めてください。
②-⑪:ポリシーテンプレートを設定
②-⑫:チャネルガードレールポリシー
● チャネルガードレールポリシー
チャネル IAM ロール・ユーザーロールより優先されるポリシーです。
CloudWatchReadOnlyAccess はつけておくとグラフが閲覧できます。
②-⑬:通知設定
*トピックに SNS で作成したものを指定してください。
③ CloudWatch
*EC2 は作成されている前提で進めていきます。
③-①:Cloudwatch>アラーム>【アラームの作成】をクリック
③-②;お好みのメトリクスを選択
③-③:アラーム条件を選択
③-④:通知設定
③-⑤:アラーム名を指定する
③-⑥【アラームの作成】をクリック
④ 通知テスト
④-①:アラーム状態になっているか確認する
④-②:アラームが通知されているか確認する
*閾値をアラートが発生しないようにすると、以下のようにリカバリーが確認できます。
まとめ
今回は、CloudWatch アラームを Chatbot で Slack に通知する方法に記事をご紹介しました。
Slack でアラーム通知する際は、簡単に Chatbot を使うと通知できます。
グラフURLやグラフの画像までついてくるので、アラームが非常に見やすいですね!
Slack は簡単に実装できますが、Teams・Chatworkでアラームを通知する場合は、AWS Lambda で Python のコードを書いたり、Webhook を用意したり、色々な手間がかかります...
AWS にはぜひ、Teams・Chatwork にも Chatbot に対応させてほしいなと思いますね(たぶん無理そうですが...)