目的
NatGatewayはフルマネージドサービスの為、カスタムスクリプトが使用できず、cloudwatchでモニターできないので、awscliの結果を整形してZabbixで取り込む。
NatGatewayの説明は省きます
方法
- awscliでNatGatewayのstatus取得
- 出力をjqで整形
- 整形データをzabbix-senderでzabbix-serverへpush
設定
- zabbix-serverに”NatGateway”グループを作成
- 作成したグループに監視対象のNatGatewayをホストとして作成(名前はなんでもいい)
- 作成したホストにアイテムを作成
名前 | タイプ | キー | データ型 | データ形式 | アプリケーション |
---|---|---|---|---|---|
NatGateway-get-status | Zabbixトラッパー | sender_natg1 | 数値(整数) | 10進数 | Sender |
- 監視対象のNatGatewayのステータスを取得し整形
- zabbix-senderのオプション
- z - Zabbix サーバのホスト(IP アドレスでの指定でも可)
- s - 監視対象のホスト名 (Zabbix-serverで登録されたもの)
- k - アイテムキー
- o - 送信する値
- vpc-**-nat-******は作成したホスト名
- zabbix-senderのオプション
#!/bin/bash
result1=$(aws ec2 describe-nat-gateways --nat-gateway-ids nat-********* | jq -r '.NatGateways[].State')
result2=$(aws ec2 describe-nat-gateways --nat-gateway-ids nat-********* | jq -r '.NatGateways[].State')
if [ $result1 = "available" ]; then
sender1=1
zabbix_sender -z 127.0.0.1 -s vpc-*****-nat-********* -k sender_natg1 -o $sender1 -vv
else
sender1=0
zabbix_sender -z 127.0.0.1 -s vpc-*****-nat-********* -k sender_natg1 -o $sender1 -vv
fi
if [ $result2 = "available" ]; then
sender2=1
zabbix_sender -z 127.0.0.1 -s vpc-*****-nat-********* -k sender_natg1 -o $sender2 -vv
else
sender2=0
zabbix_sender -z 127.0.0.1 -s vpc-*****-nat-********* -k sender_natg1 -o $sender2 -vv
fi
- ログファイル作成
/var/log/zabbix/zabbix_sender.log
(snip)
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000043"
sent: 1; skipped: 0; total: 1
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000077"
sent: 1; skipped: 0; total: 1
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000026"
sent: 1; skipped: 0; total: 1
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000043"
sent: 1; skipped: 0; total: 1
(snip)
- 5分毎に実施するようcron処理
$ cat /etc/crontab | egrep -1 '^#.20160804'
# 20160804 natgateway status check Description by me
*/5 * * * * root /etc/zabbix/scripts/get_natg-status.sh >> /var/log/zabbix/zabbix_sender.log
- ログローテート
/etc/logrotate.d/zabbix-sender
/var/log/zabbix/zabbix_sender.log
{
missingok
monthly
compress
create 0664 root root
}
- 結果
$ tail /var/log/cron | egrep '.*get_natg-status.sh'
Aug 4 18:30:01 ******* CROND[30363]: (root) CMD (/etc/zabbix/scripts/get_natg-status.sh > /dev/null 2>&1)
Aug 4 18:35:01 ******* CROND[30660]: (root) CMD (/etc/zabbix/scripts/get_natg-status.sh > /dev/null 2>&1)
Aug 4 18:40:01 ******* CROND[30910]: (root) CMD (/etc/zabbix/scripts/get_natg-status.sh > /dev/null 2>&1)
nat-********: NatGateway-get-status
2016/08/04 19:40:05 1470307205 0
2016/08/04 19:35:05 1470306905 0