はじめに
元々はこちらのURL(※既にリンク切れ)に掲載されていたPINGを実行するスクリプトをベースにして、死活監視用として使いやすい形に書き直したものです。
ちょっと監視が必要だけれども、Zabbixやmackerel、DataDogを使うほどではない...という時に役立つかもしれません。
スクリプト
- PINGを5回実行して、100%パケットがロスした時にメールを飛ばす仕組みです。
- メールの送信先を適宜変えて、Slackと連携させたりすると監視が楽になると思います。
- PINGに成功/失敗を問わず、結果は全てping.logに出力しています。
- ログファイルが徐々に肥大化していくため、ログ出力が不要なら該当行をコメントアウトしたり、ログローテーションと組み合わせた方が良いと思います。
- あとはスクリプトをcrontabなど登録すれば、一定時間ごとにスクリプトが実行されるはずです。
ping_checker.sh
#!/bin/bash
IP_LIST=(172.17.12.143 172.17.11.130 172.17.15.81 172.17.15.82)
MAILTO='your_address@sample.com'
LOG_FILE=./ping.log
for ip in ${IP_LIST[@]}
do
ping_result=$(ping -w 5 $ip | grep '100% packet loss')
date_result=$(date)
if [[ -n $ping_result ]]; then
echo "[SEVERE] server inactive: $ip $date_result" >> $LOG_FILE
echo $ip | mail -s "[ALERT] server down!! $date_result" $MAILTO
else
echo "[INFO] server active: $ip $date_result" >> $LOG_FILE
fi
done
実行結果
- ログファイルには、サーバー単位(IPアドレス単位)でPINGの実行結果が記載されます。
ping.log
[INFO] server active: 172.17.12.143 2019年 10月 24日 木曜日 20:54:39 JST
[INFO] server active: 172.17.11.130 2019年 10月 24日 木曜日 20:54:44 JST
[INFO] server active: 172.17.15.81 2019年 10月 24日 木曜日 20:54:49 JST
[INFO] server active: 172.17.15.82 2019年 10月 24日 木曜日 20:54:54 JST