Nagios+Munin+パトランプ

最近やってること。

・サーバ監視ソフト

最近業務の関係もあって、仮想化とはちょっと離れて監視ツールについて色々調べていました。
まぁ、やっぱりOSSなんですが。

調べていたのは主に以下のソフトたち。

Nagios
・Hinemos
・Zabbix

それとサブで

MRTGCacti
・Munin

ここら辺。


で、実際色々試してみた結果、Nagios+Munin+パトランプという布陣で行こうかなー、と思っています。


理由についてなんですが、ポイントは
・今回のシステムで必要な要素を取ってこれること
それから
・出来るだけシンプルに(確認も管理も)
ってところでしょうか。


Nagiosの設定は正直あまりシンプルだとは言い難い面もあるのですが、これについては現在のサービスでも使ってて実績は○、そして結構昔からあるツールだけど、現在も開発が続いてて今後のサポートも期待できるってのが○。
更に、プラグインの拡張がかなり容易に出来る、と言うのが◎で魅力ですね。


サブに関しては現在はMRTGだけど、Muninの方がノードを追加するとき楽って言うのと、Web画面の見易さ(この辺は本当は別に何でも良いんだけど)ですかね。


ただし、Nagios君なんですが、ログの管理がデフォルトだとテキストベースで、しかも過去の履歴が凄く見にくい。
これをアドオンのNDOUtilsで解消する。

NDOUtilsはNagiosのログをMySQL(postgreSQLでもいけるっぽい)で管理する為のアドオンなんですが、こいつでDBにデータを格納して、過去の履歴閲覧・検索機能はPHPなりPerlなりで作ってしまおうと言う魂胆。


HinemosやZabbixに関しては最初からDBで管理する形になるけど、HinemosはJava入れなきゃいけないし、そもそもWebベースで閲覧できなくて、Eclipse立ち上げなきゃいけないのが正直辛い。
Zabbixは最後まで悩んだけど、プラグインを自作できないってところと、管理インスタンスとかノード追加とか全てWebベースでやらなきゃいけないのがたまに傷。
Webベースで出来るってゆーのは、メリットでもあるんだけど、大量に・しかもテンプレートで一括で設定できないようなノードを追加するときに凄くめんどくさい。
コンフファイル書くだけならviでガシガシ書いて、最後にリロードで済むけど、Webベースだと一回一回設定してサブミットして…と、まぁ気の遠くなるような作業をしなきゃいけないんですよね。
UI周り、Webツールの管理体系に関しては文句なしなんですけどねぇ。


ということで、Nagiosに決定。


そして、何かアラートが上がると、メールの代わりにパトランプを光らすPerlを叩く、と。
パトランプの光り方は、完全にPerl側で制御。
どうやらSNMPトラップ拾えるタイプのじゃないようなので、サンプルプログラム(Windows専用!)から設定を引き出すのが大変でした…。

Nagiosからアラートを受け取るときに、CRITICALやWARNING等の情報も引いておいて、Perl内部で、どのパターンか振り分けてあげる。

たとえばNagiosからPROBLEM - CRITICALと受け取ったら、赤いランプの点灯+サイレンとか、PROBLEM - WARNINGだったらオレンジのランプ点滅とか、そんな感じ。
あんまり細かく設定してしまうと、逆に何がなんだか分からなくなるから、とりあえず光ったらNagiosのWebツールをチェック、って言う感じに。
実際運用開始したらメールも同時に出すことになるんでしょうが。


とりあえず特に何も考えず、適当に手元のLinuxサーバ3台と、デスクトップのWinを監視対象にして現在テストしております。


しかし、デスクトップ監視するのは良いけど、会社から帰るときにサーバマシン以外は基本的に電源落とすわけで。
翌朝出社したら、ランプがメチャ点滅しとる! …なんて状況になったりしています。。


Nagiosの設定やインストール、日本語化については色々な所で書かれているし、そもそもSUSEならYastで一発で入るので割愛します。
まぁ、今回は日本語化しろとの要望があったので、ソースからひっぱてきましたが。
(Zabbix、MRTGCacti、Muninに関してもYastで一発です)


あとは、プラグインを追加すれば、Nagiosから監視対象のサーバのSyslog監視とかも出来るようなので、その辺を調べて見たいと思います。