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=http://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”からアラートメール設定をしましょう。

create_alarm_20160115

 

関連記事