前回までの2回でネットワーク監視の必要性と分類について説明しました。
今回からは、Nagiosそのものの説明に入ろうと思います。
Nagiosはデータベースを使わない
Nagiosはデータベースを使いません。これは、Nagiosの大きな特徴だと思います。
Nagiosを導入する際に必要なものはせいぜいWebサーバくらいで、ふつうのLinuxサーバにApacheが入っていれば、その程度で動作してしまいます。
データベースがなくて、どうやって監視対象機器や監視方法の設定、監視結果の保存を行うのだろう?と思うでしょう。Nagiosはデータ管理をすべてファイルベースで行っています。設定するのもファイル、監視結果もファイルにあるわけです。
また、ファイルベースだと監視対象機器が大量になった場合に、ファイルの読み込み速度がボトルネックになるのではないか?と不安になるかもしれません。しかし、私の環境(さくらのVPS 2Gプラン)で5000ホスト分の監視設定を行ったところ(1ホストごと1ファイルで作ったので、5000ファイルの読み込みが必要となる)、Nagiosの起動はほとんど一瞬で終わりました。ファイルベースでも、その辺の心配はないのではないでしょうか。
私がいま仕事でやっているように、Nagiosベースの監視システムを開発するとなると、監視結果などをデータベースに格納して欲しいと思うこともあります。その場合は、NDOUtilsというユーティリティを使用することで、Nagiosのイベントブローカーという仕組みを使って、ファイルを介さずに、MySQLに格納することが出来ます。
NDOUtilsを使うと、Nagiosの監視設定や監視結果がそのままMySQLに反映されるのですが、Nagios単体では比較的弱い監視結果の履歴管理や履歴のローテーションといったことも出来ます。また、複数のNagiosサーバーを動作させている場合でも、1つのMySQLデータベースにデータを集約することも出来ます。Nagiosベースのシステムを開発する際には必須といえるでしょう。
但し、NDOUtilsはMySQLにデータを格納するだけで、MySQL上のデータを編集しても、それがNagiosに反映されるわけではありません。あくまで一方通行なんですね。
そのため、監視設定を行う場合は、やはりファイルを書く必要があるのです。
Nagiosは設定画面がない
Nagios本体には、監視対象機器や監視内容を設定するための画面はありません。
そのため、監視の設定については、ファイルをテキストエディタで書いていくしかありません。(設定ファイルは、平易な構造のテキストです。)
但し、設定をWeb画面から行うために、NagiosQLというWebアプリケーションも配布されていますので、それを使うこともできます。
画面で設定した内容をテキストファイルに吐き出すだけなので、その気になれば自分仕様のアプリケーションを書くこともできるでしょう。
監視結果を参照するための画面だけ、CGIで準備されています。
Nagiosそのものは監視を行わない
ちょっと誤解を招きやすい表現かもしれませんが、厳密に言えばNagios本体は監視機能を持たないのです。
では、監視そのもの(PINGやTCPなど)の実行は誰がやってくれるのかというと、プラグインが行うのです。Nagiosは、本体のプログラムの他に、標準プラグインも提供されています。例えば、PINGのプラグイン、TCPのプラグイン・・・といった形で、監視の種類ごとに、一つ一つプラグインがあるのです。
Nagiosは監視設定に従って、指定された時間に、指定された間隔で、指定されたホストに対して、指定されたプラグインを実行するだけです。あとは、プラグインが返した監視結果に沿って、「警告」や「異常」といった状態を保持したり、設定に応じて通知メールを送信したり(これも厳密に言えば通知するための外部コマンドを実行するのみ)します。
標準プラグインは主にC言語で記述されたバイナリプログラムです。しかし、プラグインの仕様は簡単で、引数で受け取ったアドレスのホストに対して監視を行い、「警告」や「異常」といった状態情報をを戻り値として戻し、その他の監視結果(ホストの応答内容やパフォーマンス情報など)を標準出力に出力するだけです。
そのため、PerlやRuby、シェルスクリプトなどで簡単にプラグインを開発することができます。
今回は、Nagiosの特徴について説明しました。次回は、いよいよNagiosの導入を説明しようと思います。
Nagiosを使う際には必携のリファレンスですね。これがないと、始まらない。