CloudWatchのアラートをSlackに連携させる方法

初めまして!吉丸と申します!
先日、CloudWatchのアラートをSlackに通知させる…といった設定作業を実施する機会がありましたので、備忘録も兼ねて、設定方法をここに記載します。

使用するAWSサービス

  1. AWS Chatbot(以下、chatbot)
  2. ChatOps(チャットツールを用いたシステム運用・開発)環境を設定する際に使用する管理ツール。
    アラート受信、AWS CLIのコマンドを実行、lambda関数実行等をチャットツールを介して実施することが可能。

  3. Amazon Simple Notification Service(以下、SNS)
  4. メッセージ配信を提供するサービス。メッセージの送信先にSQSやLambdaといったAWSサービスの他に、EメールやSMSを指定することが可能。

  5. Amazon CloudWatch(以下、CloudWatch)
  6. AWS内外のインフラやアプリの監視、ログ収集、アラート内容に基づく復旧アクションの自動実行等を行うことができるサービス。

大まかな流れ

  1. chatbotにて、アラート受信先のSlackのワークスペース及びチャンネルをAWS側に登録
  2. SNSのトピック(※メッセージ送信先をグループ単位でまとめたもの)に、chatbotで設定したSlackのチャンネルを登録
  3. CloudWatchのアラート設定画面にて、アラート発生時の通知先として上記トピックを設定

手順

  1. Chatbotの設定
    1. AWS Chatbotから[チャットクライアント]でSlackを選択し、[クライアントを設定]をクリック
    2. Slackの画面に移動するので、AWSと連携したいSlackワークスペースのURLを入力し、[続行する]をクリック
    3. 対象のSlackワークスペースがchatbotの[設定済みクライアント]に追加される
    4. 追加されたワークスペースを選択し、[新しいチャネルの設定]をクリック
    5. チャネルの設定を行う

      設定名…任意の設定名を入力する

      チャネルタイプ…アラートの通知先予定となるSlackのチャンネルタイプに合わせる。今回、受信先のSlackのチャンネルがパブリックチャンネルのため、パブリックを指定

      • パブリック…ワークスペースに所属しているユーザーであれば誰でも参加・閲覧ができるチャンネル
      • プライベート…チャンネルの参加には、既にチャンネルに所属しているユーザーに追加して貰う必要があり、非参加メンバーでは閲覧できないチャンネル

      パブリックチャネル名…アラートを受信するSlackのチャンネル名を入力する

      ロール設定…今回はチャネルロールを使用

      • チャネルロール…チャンネルに所属するメンバー全員に同じ権限を付与する設定
      • ユーザーレベルのロール…チャンネル所属のメンバーごとに別々の権限を付与する設定

      チャネルロール…今回は[テンプレートを使用してIAMロールを作成する]を使用

      ロール名…任意のロール名を入力する

      ポリシーテンプレート、チャネルガードポリシー…SlackからAWS CLIのコマンドを実行する予定はなく、
      CloudWatchからのアラートを受け取ることが主目的のため、
      ポリシーテンプレートは[通知のアクセス許可]、チャネルガードポリシーは[CloudWatchReadOnlyAccess]を選択

    6. [設定]をクリックし、完了
  2. SNSの設定
    1. Amazon SNSから、新規トピックを作成
    2. トピックを設定する
    3. タイプ…今回はAmazon SQSが必要ないため、スタンダードを選択

      名前…任意の名前を入力する

      表示名…任意の表示名を入力する

    4. [トピックの作成]でトピックを作成する
  3. 作成したトピックをチャネルに関連付け
    1. chatbotの[設定済みクライアント]の画面から、設定したチャネルにチェックを入れ、[編集]をクリック
    2. 画面下部の[SNSトピック]に作成したトピックが存在するリージョンとトピック名を入力して、[保存]をクリック
  4. Cloudwatchに設定
    1. CloudWatchの既存アラーム編集画面か、新規作成画面の[通知の送信先]に作成したトピックを入力
    2. アラート発生時、Slackにメッセージが送信されていることを確認

まとめ

chatbotとSNSを使用することで、SlackでCloudWatchのアラートを受信することでできました。
アラート発生時の送信先として、メールの他にSlackも追加しておくことで、アラートの見落とし防止になるかなと個人的に思いました。
また、今回はアラートを受信するだけでしたが、Slack側からAWS CLIコマンドやlambdaも実行できるみたいなのでいずれそちらも試していきたいと思います!

最短でAWSを習得したい方におすすめ!
オンラインスクール「とらくら」

当ブログを運営しているオンラインスクール「とらくら」では、AWSを実務で活用するために必要なAWSの主要サービスの知識を、理論だけでなく、環境構築をハンズオン形式で実践しながら学べるカリキュラムをご用意しております。
参考書だけではイメージがしにくい内容でも、「座学+実践」で効率良くインプットが可能です!
まずはお気軽に無料説明会にご参加ください。


AWS WordPress環境構築コース、受講生募集中!インフラ構築コース、受講生募集中!

投稿者プロフィール

吉丸
吉丸
<インフラエンジニア>
■入社以前は、SES企業の社員として客先常駐をしたり、派遣社員として企業を転々としたり、居場所が定まらないエンジニアだった。
■これまで主にWindows/Linuxサーバーの運用(たまに構築も)を担当。AWSは勉強中。
■マイブームはご当地銘菓を食すこと。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です