Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

PINGで死活監視するスクリプト

More than 1 year has passed since last update.

はじめに

元々はこちらのURL(※既にリンク切れ)に掲載されていたPINGを実行するスクリプトをベースにして、監視用として使いやすい形に書き直したものです。

ちょっと監視が必要だけれども、Zabbixやmackerel、DataDogを使うほどではない...という時に役立つかもしれません。

スクリプト

  • PINGを5回実行して、100%パケットがロスした時にメールを飛ばす仕組みです。
    • メールの送信先を適宜変えて、Slackと連携させたりすると監視が楽になると思います。
  • PINGに成功/失敗を問わず、結果は全てping.logに出力しています。
    • ログファイルが徐々に肥大化していくため、ログ出力が不要なら該当行をコメントアウトしたり、ログローテーションと組み合わせた方が良いと思います。
  • あとはスクリプトをcrontabなど登録すれば、一定時間ごとにスクリプトが実行されるはずです。
ping_checker.sh
#!/bin/bashIP_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
nkojima
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away