ゴールデンウィーク1日目
ずっと家にこもってみみずんさーばの監視体制の強化。
さーばのリソース監視にMRTGを使っており、データ推移を見守るにはよいのですが、閾値異常で通報させるのもなにかしっくりこない。
以前から別の監視ツールとしてNagiosを導入していましたが、デフォルトのプラグインだけで凝ったことはしていませんでした。そこで、これを強化してみました。
従来は面倒だからとUPSやWindowsマシンは、Pingのみ。FreeBSDのサーバ群は他のサービスも監視しているので、毎日深夜3時にLoadAveragesが100以上にもなってHTTPとSSHが異常になりメール通報されていました。これは後述しますがようやく解決。
監視体制の強化として、遠方のサーバを監視対象として追加。遠方のサーバはディスク容量が少なく、月初にアクセスログを圧縮・転送させていていますが、最近のアクセス数の増加をみるとけっこうやばい。週ごとに転送させないとまずいかも・・・。という状況からディスク容量監視は急務でした。
次に手元にある、録画&FAXサーバのWindowsマシンへSNMP Informantを導入しSNMPでの監視を強化。まぁ、ディスク容量ぐらいしか注意するものはありませんがメモリやCPUの使用量も監視。地デジ録画は1.5TのHDDでもあっという間に埋まっちゃいますからね。UPSはバッテリーの正常性や温度、バッテリ駆動可能時間をSNMPで監視。スイッチも監視対象にとは思ったものの、SNMPには対応しない廉価なスイッチ(とはいえ、VLANは組める)なのでPingだけ。
いちばん面倒だったのはUPSのバッテリー駆動可能時間を監視することだったかな。簡単なシェルを作るだけなのですが、試行錯誤。apcupsd前提でシリアルでデータを取得するシェルと、SNMPで取得するシェルを作ってみました。作りながらNagiosに表示させる文字列はなんでもよくて、戻り値が重要なんだなと確認。まぁ、UPSの負荷を監視すれば必然的にバッテリー駆動可能時間に連動するので、この監視は不要と言えばそれまでですが!とりあえず、Nagiosで何か監視したい場合はどういうシェルを書けばいいのか分かっただけでもよしとしよう。シェルはこんなの。
さて、ここ2年以上(?)午前3時にサーバにつながりにくくなることがありましたが、ようやく解決しました。時間からしてperiodic絡みかと思っていたのですが、cronで停止させても症状はなくならず、さじをなげて放置していたりもしました。LoadAveragesが110でまともに操作できませんし。ログを採りたくても、とれない最悪な状況。しかし、午前3時過ぎにhttpdが大量に再起動しているのを見つけApacheの設定を見直したところ解決しました。これで深夜でもつながりにくいことはないと思います。またほぼ同時に、FreeBSDのバージョンを6.4から7.3にしましたが、OSのバージョンだけで解決というのもあまりにも考えにくいのでApacheの設定が問題だったのでしょうね。解決してよかった。
あとは、上の画像の見栄えをよくすることだけだっ。いいアイコンないかなぁ。。。