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"