Cloud Watchのカスタムメトリクスで特定のurlのhttp status codeを監視する

特定のurlのhttp status codeはこんな感じのshell scriptでとれる。
知らなかったけど、curlいろいろ出力整形できて便利だった。

$ cat /home/ec2-user/cloudwatch/http_status_check.sh
#!/bin/sh
curl -s $1 -o /dev/null -w "%{http_code}"

あとは、cloud watchの権限持ったユーザをIAMで作って、key/secretをcredentialsファイルとして設置したらこんな感じでcloud watchにデータ送れるのでcronにセットするなどして、そいつにアラートつくる。PATHちゃんと設定するかフルパス指定しないと、cronからmon-put-dataが見えないので注意。

$ cat /home/ec2-user/cloudwatch/custum_metrics.sh
#!/bin/bash

export JAVA_HOME=/usr/lib/jvm/jre
export AWS_CLOUDWATCH_HOME=/opt/aws/apitools/mon
export EC2_REGION=ap-northeast-1
export AWS_CREDENTIAL_FILE=/home/ec2-user/cloudwatch/credentials
instanceid=i-******

status=`/home/ec2-user/cloudwatch/http_status_check.sh http://example.com`
if [ $status -eq 200 ]; then
Fail=0
else
Fail=1
fi
/opt/aws/bin/mon-put-data --namespace "Custom Metrix" --metric-name "Http Status ok" --dimensions "InstanceId=$instanceid" --value "$Fail" --unit "Count"