なんで
- 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