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