CloudWatch編~Custom Metricsパート①~

こんにちは! 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/sh
1export 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=17fi
1/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/sh
1export 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=""10mysqlresult
1# mysql status check2status=`mysql -u ${mysqluser} -p${mysqlpassword} -h ${mysqlhost} -e"${mysqlquery}"`3if [ "$status" = "${ mysqlresult}" ]; then4Fail=05else6Fail=17fi
1/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.sh

5.確認

コンソールで確認してみましょう!

成功していれば以下のようなCustom Metricsが確認出来ます。

Http_Status
MySQL_Status
いかがでしたでしょうか?

次回は『CloudWatch編~Custom Metrics パート②~』と題して、ELBの配下インスタンスのNetworkInをまとめてCustom Metricsに再登録してみます。

お楽しみに!!!

この記事を書いた人

aws-recipe-user