CloudWatchのカスタムメトリクスでEC2のL7ヘルスチェック(HTTPステータスチェック)
最近MySQLの調子が悪く、
Apacheは生きているがブログは見れないという
恥ずかしい事態が結構起きるため、
CloudWatchでL7ヘルスチェックを実装することにした。
1、IAMロールの設定
EC2上にアクセスキーとシークレットキーを配置しなくてもいいように、
事前にEC2にIAMロールを割り当て、
そのポリシーでCloudWatchの”PutMetricData”をAllowしておきましょう。
2、EC2にシェルを配置
HTTPステータスコードをチェックするシェル
[http_status_check.sh]
#!/bin/sh
curl -s $1 -o /dev/null -w "%{http_code}"
CloudWatchに監視データをputするシェル
[put_mon_http_custom_metric.sh]
#!/bin/bash
export AWS_REGION=us-west-1
instanceid=i-xxxxxxxa
monitored_url=https://www.cyberarchitect.net/blog/
# http status check
status=`/home/ec2-user/bin/http_status_check.sh $monitored_url`
if [ $status -eq 200 ]; then
Fail=0
else
Fail=1
fi
aws cloudwatch put-metric-data --metric-name "HttpStatusFailed" --namespace "Custom Metrics" --dimensions "InstanceId=$instanceid" --value "$Fail" --unit "Count" --region $AWS_REGION
3、cronに仕込む
*/5 * * * * /home/ec2-user/bin/put_mon_http_custom_metric.sh
4、アラートメールを設定
cronが作動するとCloudWatchの画面にMetricsが表示されるようになるので、
画面右下の”Create Alarm”からアラートメール設定をしましょう。
売り上げランキング: 36,532