RubyとGrowlでシンプルなネットワーク監視
問題
- あるホストがときどきネットワークからちょっと切断され、すぐに元に戻るなど変な動きをする
原因の仮説
現象の発生は席替え後、らしいのでソフトウェア的な何かではなくハードウェアだろう。
- LAN ケーブル
- HUB の port
- HUB そのもの
- PC の NIC
辺りか。
対処
まずはいちばん簡単な HUB の port 差し替えを行ったが現象はあまり変わらない様子。ずっと切断されるわけではなく気づくとツールチップで切断されたことが通知されている程度なのでユーザーはそれほど神経質になていないが、Sysadmin としては気持ち悪いことこのうえなし。
とりあえず監視を始めることにした。そこででっちあげたのが以下のコード。ハードコードの部分が残っているのでそのままでは使えないけど :-P (普段から使ってるわけではないので設定ファイルなどに分離する必要がなかった。)
やってることは
- ping を打って
- 返事がなかったらログに残すとともに Growl で通知
する。これを Ruby の Thread を使って複数ホストに対して1一斉に行う。監視と通知そのものは Growl の入っていない機械でも行えるようにしてある。
結果としては HUB そのものが原因だった。理由は最後まで詰めなかったが、あるタイミングで通信が不安定になるという症状で、後からよくよく聞くと他にも印刷やスキャンなどが不安定だったらしい。そういうことは早く言ってよねー。
コード
具体的に実際に行ったのは同一の HUB にぶら下がっている全ホスト ↩