CloudWatch Logsで任意の文字列を監視してグラフ化する

概要

シェルでラップして見たい値をCloudWatchに飛ばして監視する。

今回はその仕組みを流用してサーバのプロセス数を監視監視した。

ディレクトリ作成

どこでも良い。今回はec2-userの下にcloudwatchディレクトリを作成する

mkdir /home/ec2-user/cloudwatch
cd /home/ec2-user/cloudwatch

シェル作成

vi CustomMetrix.sh

#!/bin/sh
CUR_DIR=/home/ec2-user/cloudwatch

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=${CUR_DIR}/credential
InstanceId=`cat /var/tmp/aws-mon/instance-id`
# 設定ファイル
PROCESSCONFIG=${CUR_DIR}/process-conf.txt

# Process Check(設定したファイルから読み込む)
cat ${PROCESSCONFIG} | sed '/^$/d' | grep -v '^#.*' | while read PROCESS
do
COUNT=`ps aux | grep ${PROCESS} | grep -v grep | wc -l`
echo ${PROCESS}:${COUNT}
/opt/aws/bin/mon-put-data --metric-name ${PROCESS} --namespace "CustomMetrix" --dimensions "InstanceId=${InstanceId}" --value ${COUNT}
done

# LoadAverage(1分間の測定値を取得)
/opt/aws/bin/mon-put-data --metric-name "LoadAverage" --namespace "CustomMetrix" --dimensions "InstanceId=${InstanceId}" --value `cat /proc/loadavg | awk '{print $1;}'`

設定ファイル

process-conf.txt

httpd
crond

認証情報

credential

AWSAccessKeyId=aaaaaaaa
AWSSecretKey=ccccccccc

実行

sh ./CustomMetrix.sh

httpd:0
crond:1

結果