Nginxのstub_statusをcloudwatchにプロットする

alkoshikawa 339views 更新:2014年7月22日

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に差分プロットがあれば非常に嬉しいですね・・・・・。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません