Amazon CloudWatchスナップショットグラフとアラートで解決までの時間を短縮
をやってみたのでメモ。
1.EC2#
監視するEC2インスタンスを用意しておく。
2.IAMロール#
LambdaへアタッチするIAMロールを準備しておく。
CloudWatchReadOnlyAccess AmazonSESFullAccess AmazonSNSReadOnlyAccess AWSLambdaBasicExecutionRole
3.Lambda#
コードは以下のgithubのものを使います。
https://github.com/aws-samples/aws-cloudwatch-snapshot-graphs-alert-context
Githubからサンプルコードをクローンし、npm installしてからZIPを作成します。
git clone https://github.com/aws-samples/aws-cloudwatch-snapshot-graphs-alert-context
cd aws-cloudwatch-snapshot-graphs-alert-context/
npm install
zip -r snapshotgraphsalarmdemo.zip ./*
設定は、githubに記載されているとおりに設定します。
・ランタイム:Node.js
・ハンドラ:emailer.myHandler
・タイムアウト:30秒
・環境変数:EMAIL_TO_ADDRESS、EMAIL_FROM_ADDRESS、MAIL_SERVER_REGION
zip圧縮の際は注意!階層が合わないと"Unable to import module '...': No module named ..."などとなる。
参考:Lambda(Python) を実行すると "Unable to import module '...': No module named ..."
4.SNS#
SNSトピックを作成し、Lambdaへサブスクリプションします。
5.SMS#
[Email Address]で認証しておく。
6.CloudWatch#
EC2のCPUUtilizationが0以上(ここではテストのため)の場合に通知するように設定します。