CloudWatchのAlarmをSlackに通知する設定手順
システムインフラの監視アラートの通知先として、近頃はメールよりもslackなどのチャットツールを使うことが多くなってきたと感じています。ということで、AWSのCloudWatchのアラートもslackに通知するようにしてみたので、実施した手順をまとめておきます。
ここでは、CloudWatchのAlarmをslackに通知するために、Herokuにamazon-cloudwatch-to-slackを利用します。
https://github.com/esanchezm/amazon-cloudwatch-to-slack
slackのIntegration設定
まずはslackにIncomingWebhookの設定を追加します。
通知したいslackのチームにログインして、左上メニューから「Configure Integrations」を選択します。
Integrationの一覧からIncomingWebhooksを探し「View」。通知先チャネルを選び「Add Incoming WebHooks Integration」から追加します。
SetupInstructionsの「Webhook URL」をコピーしておきます(次の手順でこの文字列を使います)。
amazon-cloudwatch-to-slackの配備
以下のamazon-cloudwatch-to-slackに手順が書いてあるので、この通りに実施します。
amazon-cloudwatch-to-slack
https://github.com/esanchezm/amazon-cloudwatch-to-slack
Githubからコードをclone
PC上でgithubからcloneします。
$ mkdir ~/tmp
$ cd ~/tmp
$ git clone https://github.com/esanchezm/amazon-cloudwatch-to-slack.git
Herokuへの配備
herokuへのユーザ登録・heroku Toolbeltはセットアップは出来ている前提で、以下のようにコマンドを入力してherokuに、amazon-cloudwatch-to-slackをデプロイします。(※この範囲の利用では費用はかからないはず)
$ cd amazon-cloudwatch-to-slack
$ heroku apps:create ※設定したいアプリ名(省略してもOK)※
$ heroku config:set 'SLACK_WEBHOOK_URL=※先ほどの手順でコピーした「Webhook URL」※'
$ heroku config:set 'SLACK_USERNAME=AWS CloudWatch'
$ heroku config:set 'SLACK_ICON_EMOJI=:scream:'
$ git push heroku master
※アイコンやユーザ名は好みに応じて変更して下さい。
AWS側のAlarm設定
最後に、AWSの管理コンソールから、SNSのTopicとColudWatchのAlarmを設定します。
SNSにTopicを作成
SNSの管理コンソールから、「Topic」→「Create new topic」を選択します。 「Create Topic」画面で「Topic name」を任意に設定して、「Create topic」でtopicを作ります。
作成したTopicの「ARN」を選択後、「Create Subscription」を選択します。 「Create Subscription」画面で以下のように設定し「Create Subscription」でsubscriptionを作ります。
- Protocol: HTTPS
- Endpoint: HerokuアプリのURL(ここに設定するのは、https://〜〜.herokuapp.com/ ←こんな感じのURLです)
作成後、作成したSubscriptionを選択して「Request confirmations」でconfirmを実施します。
CloudWatchにAlarmを設定
CloudWatchの管理コンソールで、Metrics以下の適当なMetricsを選択します。 選択後、右下の「Create Alarm」を選択します。
「Create Alarm」画面で、以下のように設定し「CreateAlarm」からalarmを作成します。
- Name: 任意の名称
- Whenever: Alarmが発生するような条件を設定
- Actions-Send notifications to: 作成したSNSのtopicを選択
Alarmを作成すると、以下のようにslackに通知が上がって来るはずです。
ここでは、動作確認のため常にAlarmが発生するように条件を設定しましたが、実際に通知が必要な閾値を設定してAlarmを作成することで必要な、アラート通知を行うことが出来ます。
後は、通知のレベル毎にTopicを作ったり、slackのnotificationsの設定して、運用に適した通知を受け取ることが出来るようにすれば、大丈夫ですね。。