他のリソース
Nagiosにあなた自身のプラグインを書くのを検討しているなら、これらの他のリソースを必ず訪問し確認してください:
プラグイン概要
スクリプトと実行形式は、Nagiosプラグインとして機能するように、2つの事(最小限)をしなければなりません:
- いくつかの可能なリターン値の1つで終了します。
- 少なくとも1回のテキスト行出力をSTDOUTに返します。
あなたのプラグインの内部の作業はNagiosに重要ではありません。 あなたのプラグインは、TCPポートの状態をチェックするか、データベース質問を走らせるか、ディスクの空き容量をチェックするか、またはそれがチェックする必要がある必要なことなら何でもします。 詳細は何が、チェックされる必要であるかによります - それはあなた次第です。
復帰コード
Nagiosは、プラグインからの復帰コードを評価することによって、ホストまたはサービスの状態を決定します。 以下のテーブルは対応するサービスやホスト・ステータスに伴う有効な復帰コードのリストです。
プラグイン復帰コード | サービス状態 | ホスト状態 |
---|---|---|
0 | OK | UP |
1 | 警告 | UP or DOWN/UNREACHABLE* |
2 | 重大 | DOWN/UNREACHABLE |
3 | 未知 | DOWN/UNREACHABLE |
注意: use_aggressive_host_checking オプションが許可されれば、復帰コード 1 はホストの状態がDOWNかUNREACHABLEの結果を示します。 さもなければ、1の復帰コードはUPのホストステータスを返します。 ここでNagiosがホストがDOWNかそれともUNREACHABLEであるかどうか決める過程について説明されています。
プラグイン出力仕様
最小限、プラグインは少なくとも1行のテキスト出力を返すべきです。 Nagios3が始まってから、プラグインはオプションで出力の複数行を返すことができます。 プラグインはオプションで外部アプリケーションが処理することが出来る性能データを返す事もできます。 プラグイン出力の基本書式は以下に示されています:
テキスト出力 |
性能データオプション
長いテキスト行 1
長いテキスト行 2
...
長いテキスト行 N |
性能データ 2行
性能データ 3行
...
性能データ行 N
性能データ(オレンジで表示)はオプションです。 プラグインが出力に性能データを返すなら、パイプ(|)シンボルを使用して性能データともう片方のテキスト出力を分けなければなりません。 Additional lines of long text output (shown in blue) are also optional. また、長いテキスト出力(青で、目立つ)の追加行もオプションです。
プラグイン出力の例
可能なプラグインの出力の例を見ましょう…
ケース1: 1行の出力 (テキストのみ)
これに似た1行の出力を返すプラグインがあると仮定します:
このプラグインがサービス・チェックに使われたなら、出力全体の行は$SERVICEOUTPUT$マクロに格納されます。
ケース2: 1行の出力 (テキストと性能データ)
プラグインは外部のアプリケーションを使ってオプションで性能データを返すことができます。
これをするため,性能データは、(|)パイプシンボルでこの様にテキスト出力と分けなければいけません。:
このプラグインがサービスチェックの性能に使われるなら 赤 出力(パイプ分離の左側)の部分が$SERVICEOUTPUT$マクロに格納されます。そして オレンジ 出力(パイプ・セパレータの右側)の部分は$SERVICEPERFDATA$マクロに格納されます。
ケース3: 複数行の出力 (テキストと性能データ)
プラグインはオプションでテキスト行と性能データの複数行を返します。この様です:
/ 15272 MB (77%); /home 69357 MB (27%); | /=2643MB;5948;5958;0;5968
/home=69357MB;253404;253409;0;253414
このプラグインがサービス・チェックの性能に使われたなら、出力(パイプ・セパレータの左)の最初の赤い部分の行は$SERVICEOUTPUT$マクロに格納されます。 オレンジ部分の最初とそれに続く行は連結され(空白で) $SERVERPERFDATA$ マクロに格納されています。 青い部分、出力の2行から3行までは結合され(エスケープされた改行)$LONGSERVICEOUT$マクロに保存されています。
それぞれのマクロの最終的な内容は以下にリストアップされています:
マクロ | 値 |
---|---|
$SERVICEOUTPUT$ | DISK OK - free space: / 3326 MB (56%); |
$SERVICEPERFDATA$ | /=2643MB;5948;5958;0;5968 /home=69357MB;253404;253409;0;253414 |
$LONGSERVICEOUTPUT$ | / 15272 MB (77%);\n/home 69357 MB (27%);\n |
複数行の出力を考えて、あなたには、戻ってくる性能データのために以下のオプションがあります:
- 性能データを全く返さないのを選ぶことができます。
- 最初の行だけに性能データを返すことができます。
- その後の行だけに性能データを返すことができます。 (先頭行の後)
- 最初の行とその後の行の両方に性能データを返すことができます。 (上に示されているように)
プラグイン出力長さの制限
Nagiosはプラグインが返す最初の4KBのデータを読むだけです。 メガやギガのダンプ・データをNagiosに返す暴走したプラグインを防ぐためにこれをします。 この4KBの出力制限は、必要なら簡単に変更できます。 簡単に 配布されているソースファイルの include/nagios.h.in 中のMAX_PLUGIN_OUTPUT_LENGTH 定義の値を編集し、そして、Nagiosを再コンパイルします。 変更しなければならない物は他にありません!
例
勉強のためにいくつかのプラグイン例を探しているなら、私は、オフィシャルNagiosプラグインをダウンロードし、様々なC、Perl、およびシェルスクリプト・プラグインに目を通すことを勧めます。 オフィシャルNagiosプラグインの情報はここで見つけることができます。
Perlプラグイン
Perlプラグインの実行を早く出来るNagiosの特徴となるオプションの組込みPerlインタプリタがあります。 ここで組込Perlインタプリタを使ってPerlプラグインを開発する詳しい情報を見つけることができます。
参照: プラグイン概要, 組込Perlを使用したプラグイン開発, 性能データ