LoginSignup
0
0

More than 5 years have passed since last update.

ZABBIXサーバ上でCronまわしてCloudfrontの値とって監視する

Last updated at Posted at 2018-12-18

なんで

  • zabbixプロキシみたいな間におくサーバ建てることについての費用的な問題(あとめんどくさい
  • 他のEC2サーバの監視項目と同居させればいいじゃない
    • 「他のサーバ」がWindowsでPowershell書けないマンが今から学習するコスト(ようはめんどくさい

仕組み

対象の値をcloudwatchで取得してzabbix_senderで飛ばす
スクリプトをcronで回すよ

ラインナップ

どれも例外処理ちゃんとかいてない

1.ALB配下のHealthなホスト台数の取得

スクリプトのソース

※ターゲットグループごとに必要

#!/bin/sh

AWSCOM=/usr/bin/aws
ALBARN=$1


RESULT=`sudo $AWSCOM elbv2 describe-target-health --target-group-arn $ALBARN --profile $2 --output text | grep healthy | wc -l`

/usr/bin/zabbix_sender -z 127.0.0.1 -s $3 -k check_elbv2_HealthyHostCount -o $RESULT

※アイテムキーcheck_elbv2_HealthyHostCount想定

cron5分ごとなら
*/5 * * * * /usr/bin/sh /etc/zabbix/script/check_elbv2_HealthyHostCount_zabbixsender.sh "ターゲットグループのARN" "AWS Cliのprofile名" "zabbixに登録してるホスト名" > /dev/null 2>&1

2.DISK使用率%の取得

ソース
#!/bin/bash
TIMESTAMP1=`date -d '5 minutes ago' --iso-8601=seconds`
TIMESTAMP2=`date --iso-8601=seconds`

DISKFREESPACE1=`/usr/bin/aws cloudwatch get-metric-statistics --period 300 \
 --namespace AWS/RDS \
 --dimensions Name="DBInstanceIdentifier",Value="$1"\
 --metric-name FreeStorageSpace\
 --statistics  Maximum \
 --start-time $TIMESTAMP1 \
 --end-time $TIMESTAMP2 \
 --output text --profile $2 | grep -i DATAPOINTS |awk '{print $2}'`

ALLOCATESTRAGE=`/usr/bin/aws rds describe-db-instances \
--db-instance-identifier=$1 \
--output json --profile $2 | grep AllocatedStorage |awk '{print $2}'|sed -e 's/[^0-9]//g'` 

DISKFREESPACE2=`echo "$DISKFREESPACE1" |awk '{print $1/1024/1024/1024,$NF}'|awk '{print $1}'`

DISKUSAGE=`echo "$ALLOCATESTRAGE - $DISKFREESPACE2" | bc`
DISKUSAGEPERCENTAGE=`echo "scale=5;$DISKUSAGE / $ALLOCATESTRAGE * 100" | bc`

/usr/bin/zabbix_sender -z 127.0.0.1 -s $1 -k check_RDS_DISKusage -o $DISKUSAGEPERCENTAGE

※アイテムキーcheck_RDS_DISKusage想定

cron5分ごとなら
*/5 * * * * /usr/bin/sh  /etc/zabbix/script/check_RDS_DISKusage_zabbixsender.sh "RDS名" "AWS Cliのprofile名"  > /dev/null 2>&1

3.メモリ使用率%の取得

ソース
#!/bin/bash
TIMESTAMP1=`date -d '5 minutes ago' --iso-8601=seconds`
TIMESTAMP2=`date --iso-8601=seconds`
MEM=$4

MEMFREESPACE1=`/usr/bin/aws cloudwatch get-metric-statistics --period 300 \
 --namespace AWS/RDS \
 --dimensions Name="DBInstanceIdentifier",Value="$1"\
 --metric-name $2\
 --statistics  $3\
 --start-time $TIMESTAMP1 \
 --end-time $TIMESTAMP2 \
 --output text --profile $5 | grep -i DATAPOINTS |awk '{print $2}'`

MEMFREESPACE2=`echo "$MEMFREESPACE1" |awk '{print $1/1024/1024/1024,$NF}'|awk '{print $1}'`

MEMUSAGE=`echo "$MEM - $MEMFREESPACE2" | bc`
MEMUSAGEPERCENTAGE=`echo "scale=5;$MEMUSAGE / $MEM * 100" | bc`

MEMUSAGEPERCENTAGE2=`echo "100 - $MEMUSAGEPERCENTAGE" | bc`

/usr/bin/zabbix_sender -z 127.0.0.1 -s $1 -k check_RDS_MEMusage -o $MEMUSAGEPERCENTAGE2
cron5分ごとなら
*/5 * * * * /usr/bin/sh  /etc/zabbix/script/check_RDS_MEMusage_zabbixsender.sh "RDS名" FreeableMemory Maximum "RDSの搭載メモリ(数字のみで)" "AWS Cliのprofile名" > /dev/null 2>&1

4.CPU使用率%の取得

ソース
#!/bin/bash
TIMESTAMP1=`date -d '5 minutes ago' --iso-8601=seconds`
TIMESTAMP2=`date --iso-8601=seconds`

VALUE=`/usr/bin/aws cloudwatch get-metric-statistics --period 300 \
 --namespace AWS/RDS \
 --dimensions Name="DBInstanceIdentifier",Value="$1"\
 --metric-name $2\
 --statistics  $3\
 --start-time $TIMESTAMP1 \
 --end-time $TIMESTAMP2 \
 --output text --profile $4 | grep DATAPOINTS |awk '{print $2}'`

/usr/bin/zabbix_sender -z 127.0.0.1 -s $1 -k $5 -o $VALUE
cron5分ごとなら
*/5 * * * * /usr/bin/sh  /etc/zabbix/script/check_RDS_resource_zabbixsender.sh "RDS名" CPUUtilization Maximum "AWS Cliのprofile名" check_RDS_CPUusage  > /dev/null 2>&1

5.Dataconnection数の取得

ソース

CPU使用率%の取得のと同じ

cron5分ごとなら
*/5 * * * * /usr/bin/sh  /etc/zabbix/script/check_RDS_resource_zabbixsender.sh "RDS名" DatabaseConnections Maximum "AWS Cliのprofile名" check_RDS_DatabaseConnections  > /dev/null 2>&1
0
0
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
0
0