0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS ChatbotでおしゃれにSlack通知したい!

Last updated at Posted at 2021-11-21

TL;DR

システムがトラブった時、通知や対応を迅速に行いたいですよね。
PagerDutyとかの3rdパーティ製のツールもありますが、せっかくAWSでワークロードを実施しているのでAWS内サービスで実現してみましょう。
ということで、AWS ChatbotとSlackを連携してCloudWatchアラームがトリガされたらSlackに通知してみたいと思います。

AWS Chatbotとは?

AWS Chatbot は、Slack チャンネルや Amazon Chime チャットルームで AWS のリソースを簡単にモニタリングおよび操作> できるようにしてくれるインタラクティブエージェントです。AWS Chatbot を使用すると、アラートを受信することや、診断情> 報の取得、AWS Lambda 関数の呼び出し、AWS サポートケースの作成を行うコマンドを実行することができるようになります。
https://aws.amazon.com/jp/chatbot/

どうやら、インタラクティブに会話するような会話Botというものではなく、診断情報やアラートをチャットツールに連携してくれるエージェントのようなものであるらしい。
(※)Lambda関数やサポートケース作成のためのコマンドも実行できるらしいが、今回は未検証です。

Chatbotと統合されているAWSサービスは下記に記載されています。
https://docs.aws.amazon.com/chatbot/latest/adminguide/related-services.html

ChatbotとSlackを接続する

では実際にChatbotとSlackを接続してみましょう
Chatbotを動かすためにはSNSトピックも必要となるのでそちらも構築していきます
Screen Shot 2021-11-22 at 5.47.51.png

Slackワークスペースを作る

ここは割愛します。
Slackの公式ガイドを参照しましょう。

Chatbot用SNSトピックを作成

Chatbotがアラートを受け取れるようにするためにSNSトピックを作成します。
今回は疎通取れればOKなので、SNS設定はスタンダードに設定、その他設定項目は初期状態。
Screen Shot 2021-11-22 at 2.10.02.png

Chatobot側操作

  1. 「チャットクライアントを設定」からSlackを選択
    Screen Shot 2021-11-22 at 2.01.15.png

  2. ChatbotにSlackへのアクセス権限を付与
    Screen Shot 2021-11-22 at 2.02.54.png

  3. 新しいチャネルを設定
    Screen Shot 2021-11-22 at 2.05.12.png

  4. Slackチャネルの詳細設定(前編)
    #####設定名
    コンソール上に表示される「設定名」を入力
    #####Slackチャネル
    通知先のSlackチャネルを設定。今回はパブリックチャネルの「alert」に設定しました
    Screen Shot 2021-11-22 at 2.14.30.png

  5. Slackチャネルの詳細設定(後編)
    ####アクセス許可
    Chatbotに付与するIAMロールを選択(ロールがない場合はこのタイミングで作成可能)
    (※)IAMロールの中身はSupportやLambdaのInvokeやSSMが設定されています。気になる人はポリシーを確認してみましょう
    ####通知
    一番大事。ここを設定しないとChatbotにAWSサービスからの通知が飛ばないので文鎮と化します。(ちなみに後でも設定はできる)
    Screen Shot 2021-11-22 at 2.17.06.png

  6. 設定完了!
    「設定済みチャネル」に先程入力した内容が表示されていればOK
    Screen Shot 2021-11-22 at 2.24.03.png

CloudWatch Alarm 作成

CloudWatchコンソールからAlarmを作成

今回はテスト用に立てたEC2インスタンスのステータスチェックがFailした際に通知が飛ぶように設定する
稼働中のEC2が落ちたら通知されたいですよね。
Screen Shot 2021-11-22 at 2.30.37.png

メトリクスはこちら

Screen Shot 2021-11-22 at 2.45.10.png

設定内容

5分間のウィンドウ枠でステータスチェックが1度以上Failしたら通知する、という内容で設定
Screen Shot 2021-11-22 at 3.03.22.png

先程設定した監視条件に引っかかった際の挙動を設定
・アラーム状態に遷移して、先程作成したSNSトピックに通知を投げ込む、という内容で設定
Screen Shot 2021-11-22 at 2.49.32.png

Alart発火させてみる

それではテスト通知してみましょう。
コンソール上からCloudWatchアラームの状態を変更することはできないため、CLIから下記コマンドでAlarm状態に遷移させてみる。

aws cloudwatch set-alarm-state --alarm-name test-ec2-alarm --state-value ALARM --state-reason "test"

するとこんな感じでSlackに通知が飛んでくる
見やすい上にグラフも付いてるし素敵!
Screen Shot 2021-11-22 at 3.14.03.png

ちなみに、同様の内容をSNS→Email通知するとこんな感じのテキストメールが飛んできます。
Screen Shot 2021-11-22 at 3.14.42.png

Slack通知の方が見やすくていいですね。

まとめ

日頃使っているChatツールとの連携がネイティブにできるのがChatbotの一番の嬉しみではないでしょうか。
メール通知でもアラートは飛ばせますが、連絡のチャネルが割れるのは辛いですよね。
SlackとChatbot間の連携も簡単にできるので、お手軽に通知の仕組みを作りたいときには非常に有用ではないでしょうか。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?