Nginxのactive_connectionsと捌いたリクエスト数をプロットします。
#!/bin/bash AWS_CLOUDWATCH_HOME=/opt/aws/apitools/mon REGION="ap-northeast-1" STATUS="/tmp/nginx_status" CREDENTIAL=/usr/local/cloudwatch/aws-credential SERVER=`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id` wget -q -O - http://localhost/server-status?auto > $STATUS ACTIVE_CONNECTIONS=`cat $STATUS | grep "Active connections" | awk '{ print $3 }'` HANDLED_REQUESTS=`cat $STATUS | egrep "^\s[0-9]+\s[0-9]+\s[0-9]+.*$" | awk '{ print $3 }'` ${AWS_CLOUDWATCH_HOME}/bin/mon-put-data --metric-name nginx-connections --namespace "EC2: NGINX" --dimensions "InstanceId=$SERVER" --unit "Count" --value $ACTIVE_CONNECTIONS --aws-credential-file $CREDENTIAL --region $REGION ${AWS_CLOUDWATCH_HOME}/bin/mon-put-data --metric-name nginx-requests --namespace "EC2: NGINX" --dimensions "InstanceId=$SERVER" --unit "Count" --value $HANDLED_REQUESTS --aws-credential-file $CREDENTIAL --region $REGION
/usr/local/cloudwatch/aws-credentialには
AWSAccessKeyId={accessKey} AWSSecretKey={secretKey}
という感じでファイルを配置します、nginxの設定は
server { listen 80; ・・・ ・・・ ・・・ location /server-status { stub_status on; access_log off; allow 127.0.0.1; deny all; } }
という形です。
nginx-requestsは右肩上がりのグラフになってしまいますが仕様です。
CloudWatchに差分プロットがあれば非常に嬉しいですね・・・・・。