AWSCLI を使って ELB のトラフィックを munin でグラフ化
表題の通りの munin plugin です。
elb_traffic.sh
#!/bin/bash AWS="/usr/bin/aws --region ap-northeast-1" ELB_NAME=`basename $0 | cut -d _ -f 1` # 取得したいメトリクス METRICS=("RequestCount" "HTTPCode_ELB_4XX" "HTTPCode_ELB_5XX" "HTTPCode_Backend_2XX" "HTTPCode_Backend_4XX" "HTTPCode_Backend_3XX" "HTTPCode_Backend_5XX") # munin の設定 if [ "$1" = "autoconf" ]; then echo yes exit 0 fi if [ "$1" = "config" ]; then echo "graph_title aws elb ${ELB_NAME} " echo "graph_args --base 1000 -l 0" echo "graph_category aws-elb" echo "graph_vlabel aws elb ${ELB_NAME}" echo "graph_scale yes" echo "graph_info aws elb ${ELB_NAME}" for METRIC in "${METRICS[@]}" do echo "${ELB_NAME}_${METRIC}.label ${ELB_NAME}_${METRIC}" echo "${ELB_NAME}_${METRIC}.info ${ELB_NAME}_${METRIC}" echo "${ELB_NAME}_${METRIC}.type GAUGE" echo "${ELB_NAME}_${METRIC}.draw LINE" done exit 0 fi for METRIC in "${METRICS[@]}" do retval=`${AWS} cloudwatch get-metric-statistics \ --namespace "AWS/ELB" \ --metric-name ${METRIC} \ --dimensions "[{\"Name\":\"LoadBalancerName\",\"Value\":\"${ELB_NAME}\"}]" \ --period 60 \ --start-time $(date --iso-8601=seconds --date '24 hour ago') \ --end-time $(date --iso-8601=seconds) \ --statistics "Sum" | jq -r '.Datapoints | sort_by(.Timestamp) | reverse | .[0]'` count=`echo "${retval}" | jq -r '.Sum'` echo "${ELB_NAME}_${METRIC}.value ${count}" done exit 0
これに実行権限を付与してシンボリックリンク作成して munin-node restart 。
シンボリックリンクは my-elb_
とリンク名の先頭に監視したい elb 名をつけます。
ln -s /usr/share/munin/plugins/elb_traffic.sh /etc/munin/plugins/my-elb_elb_traffic