こんにちは! JQです。
前回は『 SES(メール配信サービス)編~Simple Email Service パート④~ 』ということで、PostfixからSESへリレー設定してみました。
今回は『CloudWatch編~Custom Metrics パート①~』と題して、Custom Metricsを利用してサービスのステータスを登録してみたいと思います。
Custom Metricsの作成
1.下準備
Custom Metricsを利用する為に次を準備しておきます。
※以下が前提となります。
・CloudWatchにデータをPutするためのIAMアカウント
・AWS コマンドラインツールのインストール
2.Apacheのステータスを監視するCustom Metrics構築
EC2が自分の「Public Address」を取得して、それに対してcurl コマンドでアクセスしてhttpのStatusCodeを取得します。
StatusCodeが200だった場合とそれ以外でCloudWatchにPutします。
1#!/bin/sh1export JAVA_HOME=/usr/lib/jvm/jre2export AWS_CLOUDWATCH_HOME=/opt/aws/apitools/mon3export EC2_REGION=ap-northeast-14export AWS_CREDENTIAL_FILE=/opt/aws/credential-file5instanceid=`curl -s http://169.254.169.254/latest/meta-data/instance-id`6publicurl=`curl -s http://169.254.169.254/latest/meta-data/public-hostname`1# http status check2status=`curl -s http://${publicurl} -o /dev/null -w "%{http_code}"`3if [ $status -eq 200 ]; then4Fail=05else6Fail=17fi1/opt/aws/bin/mon-put-data --metric-name "Http Status fail" --namespace "Custom Metrix" --dimensions "InstanceId=$instanceid" --value "$Fail" --unit "Count"3.RDSへのMySQL接続の監視するCustom Metrics
続いてRDSへのMySQL接続の監視するスクリプトも構築してみます。
RDSに対して特定のクエリーを発行して結果によりPutする内容を変えます。
1#!/bin/sh1export JAVA_HOME=/usr/lib/jvm/jre2export AWS_CLOUDWATCH_HOME=/opt/aws/apitools/mon3export EC2_REGION=ap-northeast-14export AWS_CREDENTIAL_FILE=/opt/aws/credential-file5instanceid=`curl -s http://169.254.169.254/latest/meta-data/instance-id`6mysqlhost=""7mysqluser=""8mysqlpassword=""9mysqlquery=""10mysqlresult1# mysql status check2status=`mysql -u ${mysqluser} -p${mysqlpassword} -h ${mysqlhost} -e"${mysqlquery}"`3if [ "$status" = "${ mysqlresult}" ]; then4Fail=05else6Fail=17fi1/opt/aws/bin/mon-put-data --metric-name "Http Status fail" --namespace "Custom Metrix" --dimensions "InstanceId=$instanceid" --value "$Fail" --unit "Count"4.Cronへの登録
上記で作成したスクリプトをCronに登録して一定間隔で走らせます。
1# crontab -e2* * * * * ^/http_metrics.sh3* * * * * ^/mysql_metrics.sh5.確認
コンソールで確認してみましょう!
成功していれば以下のようなCustom Metricsが確認出来ます。
次回は『CloudWatch編~Custom Metrics パート②~』と題して、ELBの配下インスタンスのNetworkInをまとめてCustom Metricsに再登録してみます。
お楽しみに!!!