Nagiosに用意された外部コマンドの使用法Leverage OSS(1/2 ページ)

オープンソースの統合監視ソフトウェアとして人気を集めているNagiosは、外部コマンドパイプというファイルを介してコマンドやイベントを外部アプリケーションから受け取る強力な機能を装備している。本稿では、Nagiosの自由度をさらに高めるこの機能について解説する。

» 2009年01月06日 01時00分 公開
[Wojciech Kocjan,SourceForge.JP Magazine]
SourceForge.JP Magazine

 システム監視ツールのNagiosには、コマンドやイベントを外部アプリケーションから受け取る強力な機能が装備されている。通常こうした外部コマンドの送信元となるのは、イベントハンドラないしNagiosのWebインタフェースである。外部コマンドが最も役立つ状況としては、各自のシステムで用いるハンドラを作成する場合や、Nagiosと情報交換をさせる外部アプリケーションを構築する場合を想定すればいい。

本稿はPackt Publishingより最近出版された『Learning Nagios 3.0』からの抜粋である。

 外部コマンドパイプとは、Nagiosがメッセージの受信に使用するファイルシステム上に作成されたパイプファイルのことである。ここでの通信には特別な認証や権限は必要なく、唯一課される要件は、コンパイル時のlocalstatedirオプションで指定されたディレクトリにあるパイプファイルrw/nagios.cmdへの書き込み権限を有していることだけだ。

 一般に外部コマンドファイルへの書き込み権限は、所有者およびnagioscmdで使用される通常のグループに対して与えられている。Nagiosデーモンへのコマンド送信を許可したいユーザーについては、このグループへの追加登録だけをしておけばいい。

 コマンドパイプには、結果を返す機能が用意されていないという欠点が存在する。これは致命的な不備ではないものの、Nagiosに対してquery系のコマンドを送信することはできない。つまりコマンドパイプによる操作だけでは、Nagiosに渡したコマンドが既に処理済みであるのか、すぐに処理されるのかといった情報を確認できないのだ。ただし、Nagiosのログファイルを読み取ることはできるので、その情報を基にすれば、渡したコマンドが正常に解析されていたかを確認することはできる。

 Webインタフェースを介したNagiosの制御は、外部コマンドパイプを用いて行うようになっている。Webインタフェースから行うNagiosへのコマンド送信や設定変更に、そのほかの機構が介在することはない。

 Nagiosデーモンからは、どのユーザーが何の操作を実施可能かを明確に区別することはできない。よって、リモートユーザーによる外部コマンドパイプを用いたコマンド送信を実装する場合は、権限を有さないユーザーによるNagiosへの危険なコマンド送信を防止する認証機構を設けておく必要がある。

 コマンドに用いる構文は単純なものである。基本的な構文は後記のように定められているが、各コマンドは1つの行として記述する必要があり、その末尾は改行記号で終えなくてはならない。

[TIMESTAMP] COMMAND_NAME;argument1;argument2;...;argumentN


 TIMESTAMPは、UNIX時刻での指定を行う。つまり1970年01月01日の00時00分00秒からの経過時間を秒に換算した値を求めなくてはならないが、この種の計算はdateコマンドで行えるはずだ。またプログラミング言語の中には、現在のUNIX時刻を取得する機能が設けられているものが多い。

 コマンド名はすべて大文字で記述するよう定められている。指定可能な引数は個々のコマンドごとに異なり、例えば後記のサンプルは、セキュリティ監査に合格した旨のコメントをホストに追加するシェルコマンドである。


echo "['date +%s'] ADD_HOST_COMMENT;somehost;1;Security Audit;
This host has passed security audit on 'date +%Y-%m-%d'"
>/var/nagios/rw/nagios.cmd

 実際にこれを実行すると、外部コマンドパイプを介して1つのADD_HOST_COMMENTコマンドがNagiosに送信される。その後Nagiosはこのコメントをsomehostというホストに追加し、その際には当該コメントの発信元は「Security Audit」であるという通知も行う。つまり、このコマンドの1番目の引数はコメントの追加先とするホスト名の指定、2番目の引数は当該コメントを永続化させるかどうかのNagiosに対する指定、3番目の引数はコメントの発信元を示す指定、4番目の引数はコメント本体となるテキストとなっているのだ。

 サービスを対象としたコメントの追加でも同様のADD_SVC_COMMENTコマンドを使用する。このコマンドの構文はADD_HOST_COMMENTのものとほぼ共通しているが、この場合はホスト名だけでなくサービス名も指定しなくてはならない。

 こうしたコメントを個別または一括して削除するには、DEL_HOST_COMMENTDEL_ALL_HOST_COMMENTSDEL_SVC_COMMENTDEL_ALL_SVC_COMMENTSというコマンドを使用する。

 そのほかに言及すべきものとして、チェックのスケジュール指定と強制実行に関連したコマンド群が存在する。可及的速やかなチェックを要求する具体的なケースとしては、特定ソリューションに対する試験を施す場合などを想定すればいいだろう。

       1|2 次のページへ

Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ