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スクリプトをごにょごにょして監視させられますし、監視条件も自由です。
ちょっと便利かもしれません。