サーバのノードダウンをLINEで通知
外出先からiPhoneのホームアプリを使って暖房のスイッチを入れようとすると、homebridgeサーバが何らかの理由でダウンしている、なんてことがたまにあります。今はGoogle Home Miniを併用していて、IRKitがフリーズしていない限りそこまで困ることはありません。そのあたりの話はまた別のエントリで書くとして、Raspberry Piの話に戻ると、ウチの場合はhomebridgeサーバを自ら監視して、自分がネットワークに接続できていなければ再起動をかけるように設定しています。
この話は今回書こうと思っているお話と関係なくはないのですが、これまた別のお話。今回は、homebridgeサーバがダウンしていたら、別の監視用のRaspberry Pi ZeroからLINE通知が来るようにしました、というお話です。
1.LINEのアクセストークンを発行
最初、サーバがダウンしたらメールで通知が来るようにしようと思ったのですが、これだけの為にメールサーバを立てるのも、踏み台にされるリスクがあるし、運用に手を取られるのも現実的ではないでしょう。それに、今どき個人サーバのノードダウンでメールが来るなんて前時代的だしダサい…という勝手な思いもあり、スマホに通知が来る方向で考えました。
そんなこんなでサーバのノードダウンをLINEで通知する方法を検討し、下記のようになりました。
今回はこちらのサイトを参考にさせて頂きました。
www.tapun.net
まずはLINEのアクセストークンを発行します。
下記のサイトにアクセスして、使っているLINEのIDでログインします。
https://notify-bot.line.me/my/
右上のアカウント名から[マイページ]を開き、[トークンを発行する]をクリックします。
[トークン名を記入してください (通知の際に表示されます)]には適当に名前をつけ、[1:1でLINE Notifyから通知を受け取る]をクリックして[発行する]をクリックします。
これでトークンが発行されます。
このアクセストークンを監視用のシェルスクリプトに使用します。
2.シェルスクリプトの準備
ウチにはhomebridge用のRaspberry Pi以外にRaspberry Pi Zeroが二つあるので、その片方に下記のシェルスクリプトを仕込みました。
参考はこちらのサイトになります。
inamuu.com
任意の場所に下記のスクリプトを作るのですが、ぼくは /usr/local/bin/ に作成しました。
$ sudo vim /usr/local/bin/notify-serverdown.sh
#!/bin/bash NUM01=3 IPLIST=“監視サーバのIPアドレスを記入。スペース区切りで複数指定可” ### PING check for IPL in ${IPLIST} do ping ${IPL} -c ${NUM01} if [ $? -eq 1 ];then if [ -e /tmp/pingfile${IPL}.tmp ];then echo "TMP file already exsists" else touch /tmp/pingfile${IPL}.tmp curl -XPOST -H 'Authorization: Bearer LINEのトークンを入力’ -F 'message=通知メッセージを記入’ https://notify-api.line.me/api/notify fi else rm -f /tmp/pingfile${IPL}.tmp fi done exit 0
保存したスクリプトの権限を変更します。
sudo chmod 744 /usr/local/bin/notify-serverdown.sh
監視先のサーバをシャットダウンするか、スクリプト内の指定を存在しないIPアドレスに変更してテストします。
$ sudo /usr/local/bin/notify-serverdown.sh
これでLINEに通知が来れば成功です。