2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

簡単サーバ監視シェル「監視君」の利用!

何だか、つまんない物考えて作ってみた(笑)。その筋の方は誰でもやってるだろうけどね(笑)。
日頃、鯖が落ちてるか落ちてないかはクライアントホスト側でメール及びウェブを実際使っていて繋がらない状態が起きて初めて発見することが多いのではなかろうか?違うかな?
有る意味、「何かのツールを使って鯖監視したいが、お金がかかる物ばかりで躊躇する」そんな事を思ってる方も少なくないと思う。確かにお金をかければWeb上で監視できる便利な鯖監視ツールもあるが・・・・。
ここでは、誰でも考えそうだがpingを発行して鯖がダウンしてるか調べるシェルプログラム「監視君」を紹介したい。簡単なシェルだが鯖がダウンしているとメールを発行してくれるので便利だと私的には思う。


1.監視君の動作環境

基本的に、UnixOSで/bin/shが有れば動く(笑)。
ただし、OSによって少しプログラムの手直しが必要になる(具体的には、pingコマンドのオプションパラメータが違う)。
俺が作成してここで紹介する「確認君」は、VineLinux用である。つまり、RedHat系のLinuxでは動くと思う。
他のLinuxでも動くと思うが保証できない。


2.監視君のシェルプログラムの内容

以下に、監視君のソースを表示する。

# vi kanshi.sh
#!/bin/sh
#
# auto ping for Vine Linux
# presented by M.Hirono
#
for ip in 192.168.0.42 192.168.0.43 192.168.0.45 ← ※1
do
↓ ※2 ↓ ※3
ping -w 1 $ip | grep ‘パケット損失 100%’ > /dev/null && echo $ip && echo $ip | mail -s
‘ALERT server down!!’ < Your mail address > ← 一行に書く
↑ ※4
done

プログラムの説明をすると、for ip in ~ do で繰り返し処理を行う。ip環境変数のipアドレスin以降のipアドレスが順次代入される。※1のipアドレスは監視したいサーバのipアドレスをスペースで区切って羅列する。
さらに、各ip環境変数に代入されたipアドレスに対して以降のpingが実行される。pingの実行は、一回のみ。
※2ping  -wパラメータは、FreeBSDには存在しなかった。無い場合は、-cに訂正して欲しい。
grep以降の文字列の、

# ping -w 1 192.168.0.45PING 192.168.0.45 (192.168.0.45) 送信元 192.168.0.43 : 56(84) bytes of data.
— 192.168.0.45 ping 統計 —
送信パケット数 2, 受信パケット数 0, パケット損失 100%
^^^^^^^^^^^^^^^^^^

‘パケット損失 100%’ は上記のようにpingのACKが来なかった場合のメッセージを参照している。
つまり、メッセージがマッチしたら&&以降の処理を実行するようになっている。したがって、※3のメッセージはOSのlocaleによって違う。なので、他のOSで使用する場合は存在しないホストにpingを打ってメッセージを確認して変更して欲しい。
※4の < Your mail address > は、サーバアラートが出たときにアラートメールを送信したいメールアドレスを記入する。


3.監視君の実行結果

IPアドレス192.168.0.45のサーバがダウンしている場合。

[root@yh /tmp]# ./kanshi.sh

192.168.0.45

[root@yh /tmp]#

以下の内容のメールが送信される。

Subject : ALERT server down!!
内容 : 192.168.0.45

このような結果が得られた(^^)v


4.実際の監視スケジューリング

監視君は通常、九龍で数分毎に実行するのがベストと考える。簡単なシェルだが役に立つと思う(^^)v

以上

コメント