LoginSignup
1
2

More than 5 years have passed since last update.

zabbix外部チェックでcloudwatch監視

Last updated at Posted at 2017-03-10

概要

Cloudwatchから主にCloudfront系を監視したくて
以下を参考にある程度、Zabbix側で自由が効く形でのshell。
zabbixサーバにrubyとかpythonとか入れたくなかったってのもある。

Script

ポイント

  • STATISTICSはzabbix側から呼ぶ時に、"-s Sum"とかになり、jqの所でエラーになるのでTrimしてる
  • float桁数エラー対応で小数点第2位までで丸めてる。
  • 開始時間は、渡された秒数でマイナス
  • Cloudfrontはus-east-1でしか見れないのでしょうがなく渡してる
  • 都合上、nullは困るのでif [ -z $res ]; then res="0"; fiで0代入
#!/bin/bash

# ex) /usr/lib/zabbix/externalscripts/cloudwatch.sh -d "Name=Region,Value=Global Name=DistributionId,Value=xxxxxxx" -m Requests -s Average -n AWS/CloudFront -r us-east-1

export AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXXX
export AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

PERIOD=300
REGION=ap-northeast-1

while getopts n:d:m:s:r:p: OPT
do
  case ${OPT} in
    n) NAMESPACE=${OPTARG} ;;
    d) DIMENSIONS=${OPTARG} ;;
    m) METRIC=${OPTARG} ;;
    s) STATISTICS=${OPTARG//[[:blank:]]/} ;;
    r) REGION=${OPTARG} ;;
    p) PERIOD=${OPTARG} ;;
    *) exit 1 ;;
  esac
done

pointdate=`date "+%Y/%m/%d %H:%M:00"`

res=$(aws cloudwatch get-metric-statistics --region ${REGION} --period ${PERIOD} \
 --namespace ${NAMESPACE} \
 --dimensions ${DIMENSIONS} \
 --metric-name ${METRIC} \
 --statistics ${STATISTICS} \
 --start-time `date --iso-8601=seconds --date "${pointdate} ${PERIOD} sec ago"` \
  --end-time `date --iso-8601=seconds --date "${pointdate} 0 minutes ago"` \

 | /usr/bin/jq -r ".Datapoints[].${STATISTICS}" \
 | head -1 \
 | awk '{printf("%4.2f"), $1}' )

if [ -z $res ]; then  res="0"; fi

echo $res

呼び出し例

/usr/lib/zabbix/externalscripts/cloudwatch.sh -d "Name=Region,Value=Global Name=DistributionId,Value=XXXXXXXXXXXXXX" -m Requests -s " Sum" -n AWS/CloudFront -r us-east-1

他留意点

  • 外部チェック設定時は、更新間隔カスタマイズ → 定期設定 → 更新間隔: m0,30 とか、キリ良く動くようにしといた方が幸せかも
    • なお、その際に更新間隔は0にする。
  • 色々合算するならAverageじゃなくてSumで。
    • 俺氏、Average合算したりして平均値じゃなくて中途半端な中央値的なの出して時間無駄にした
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2