higehikiのブログ

iPhoneアプリ「ログ雀」の中の人です。

CloudWatchでhttpdプロセスを監視する

EC2 ( CentOS ) をCloudWatchで監視する で紹介したカスタムメトリクスの手法では、Amazon CloudWatch Monitoring Scripts for Linux という追加モジュールで簡易的に対応できました。

今回の「httpdプロセスを監視する」要件の場合は、上記のスクリプトでは対応できません(中身書き換えればできるんだろうけどw)ので、おとなしく CloudWatch Command Line Tools を使い、カスタムメトリクス (CustomMetrics)を送信します。

ダウンロード
http://ec2-downloads.s3.amazonaws.com/CloudWatch-2010-08-01.zip

リファレンス http://awsdocs.s3.amazonaws.com/AmazonCloudWatch/latest/acw-qrc.pdf

適宜、都合のいい場所にダウンロード、展開するだけで基本的に利用可能ですが、yumでインストールしていない場合、PATHを通す必要があります。ココで結構僕はハマりました。
あとは JAVAのインストールが必要です。

# cd /usr/local/
# wget http://ec2-downloads.s3.amazonaws.com/CloudWatch-2010-08-01.zip
# unzip CloudWatch-2010-08-01.zip

# vi /home/ec2-user/bin/custom_metrics_httpd_report.sh
#!/bin/bash

export AWS_CLOUDWATCH_HOME=/usr/local/CloudWatch-1.0.20.0
export AWS_CREDENTIAL_FILE=/etc/aws/aws-credential-file
export AWS_CLOUDWATCH_URL=https://monitoring.amazonaws.com
export PATH=$AWS_CLOUDWATCH_HOME/bin:$PATH
export JAVA_HOME=/usr

InstanceId=i-xxxxxxx

apachecnt=`ps cax | grep httpd | wc -l`

let "allcnt=apachecnt"

if [ "$allcnt" -gt "0" ]; then
 Processes=1
else
 Processes=0
fi

mon-put-data --metric-name "HttpdProcesses" --namespace "System/Linux" --dimensions "InstanceId=$InstanceId" --value "$Processes" --unit "Count" --region ap-northeast-1
# chmod 755 /home/ec2-user/bin/custom_metrics_httpd_report.sh

sh内で PATHを通すことで対応していますが、bashrc何かで通しちゃってもいいと思います。
また、namespaceは自由に定義できますが、System/Linux としておくことで、CloudWatch上では幾分か見やすいかもしれません。

こんな感じで、httpd以外のプロセスも shスクリプトをごにょごにょして監視させられますし、監視条件も自由です。
ちょっと便利かもしれません。