AWSで監視してSlackに流す設定

EC2 -> CloudWatch -> SNS -> Lambda -> Slackみたいなよくある設定例

Slack

Customize Slack => Custom Integrations から Incoming WebHooks 選んで適当にチャンネル選んで追加
URLをメモっておく

EC2

とりあえずaws cli入れて、この辺の監視スクリプトをcronに登録すればOK

apt-get install awscli
# カスタムメトリクス用スクリプト
apt-get install unzip libwww-perl libdatetime-perl
curl http://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.1.zip -O
unzip CloudWatchMonitoringScripts-1.2.1.zip
rm CloudWatchMonitoringScripts-1.2.1.zip
cd aws-scripts-mon
cp awscreds.template awscreds.conf
vim awscreds.conf # keyIDとSecretKeyを書いておく

こんな感じのやつをcronに登録

~/aws-scripts-mon/mon-put-instance-data.pl --mem-util --swap-util --disk-path=/ --disk-space-util --from-cron

んで即座に反映されるはず

CloudWatch

ダッシュボード作ったりアラーム書いたりしておく
通知はSNSのTopicsを指定する(後述)

SNS

Topicsを新しく作ってTopicネームくらいは適当に埋めておく後で、Lambda側で指定するのでTopicさえあればOK

Lambda

適当にNode.jsで書く

こんな感じのスクリプトをZipで固めてアップロード
https://github.com/yaasita/aws-lambda-slack-post

zip -r my-func.zip index.js node_modules/

あとはトリガーにSNSを指定すればOK

参考リンク