パフォーマンスデータ


序文

Nagiosはプラグインが返すステータスデータにパフォーマンスデータをつける事を許容しており、外部で動作するアプリケーションに処理させることも許容しています。 パフォーマンスデータのタイプの違いの記述はデータ処理をどのように行うかというの情報は以下で述べます・・・

パフォーマンスデータのタイプ

Nagiosから得られるパフォーマンスデータには2つの基本的なカテゴリがあります:

  1. チェックパフォーマンスデータ
  2. プラグインパフォーマンスデータ

チェックパフォーマンスデータはホストやサービスチェックの実際の実行と 関係のある内部データです。これはサービスチェック遅延 (例:サービスチェックが予定された時間と比べてどれだけ"遅れて"実行されたか) とホスト、サービスチェックの実行時間がどれぐらいであったかと言うことが含まれています。 このタイプのパフォーマンスデータは実行される全チェックで有効です。 $EXECUTIONTIME$ マクロにてホスト、 サービスチェックの実行時間を取得でき、$LATENCY$ マクロにてサービスチェック実行が どれぐらい"遅延"しているか取得できます。

プラグインパフォーマンスデータ はホスト、サービスチェックで使用する特定のプラグインの外部データです。プラグイン特有のデータにはパケットロスのパーセンテージ、ディスク空き容量、CPU負荷、現在のログインユーザ数などの情報が含まれています。 - 基本的にはプラグインが実行されたときの任意のメトリックタイプです。プラグイン特有のパフォーマンスデータはオプションで、プラグインによっては対応していないものもあるでしょう。この文書を書いている段階では、パフォーマンスデータを返すプラグインはありませんが、近いうちに対応するでしょう。プラグイン特有のパフォーマンスデータは(もし対応していれば) $PERFDATA$ マクロで取得できます。

プラグインのためのパフォーマンスデータサポート

通常はプラグインは計測データのタイプの状態を示した1行のテキストを返します。 たとえばcheck_pingプラグインはおそらく次の行を返すでしょう:

PING ok - Packet loss = 0%, RTA = 0.80 ms

この出力のタイプは、 $HOSTOUTPUT$か$SERVICEOUTPUT$マクロで利用可能です (このプラグインがホストチェックで使われているのか、サービスチェックで使われているのかによる)。

Nagiosにプラグイン特有のパフォーマンスデータを渡す為にはプラグイン使用を拡張します。もしプラグインがNagiosにパフォーマンスデータを返したければ、通常のテキストの返り文字列の後ろにパイプ文字(|)を加え、1つ以上のパフォーマンスデータメトリクス文字列を付け加えます。例としてcheck_pingプラグインを見てみると、パケットロスのパーセンテージとround tripタイムパフォーマンスデータメトリクスを返しています。サンプル出力は以下です:

PING ok - Packet loss = 0%, RTA = 0.80 ms | percent_packet_loss=0, rta=0.80

Nagiosはこのフォーマットのプラグイン出力を2つのパートに分割します:一つやパイプ文字より前の部分で"通常の"プラグイン出力に、もう一つはパイプ文字列より後ろの部分でこれを、プラグイン特有のパフォーマンスデータと見なします。"通常の"プラグイン出力は $HOSTOUTPUT$や$SERVICEOUTPUT$ マクロに蓄えられ、一方のオプションのパフォーマンスデータは $HOSTPERFDATA$ や $SERVICEPERFDATA$ マクロに蓄えられます。上の例では、 $HOSTOUTPUT$ もしくは $SERVICEOUTPUTマクロには "PING ok - Packet loss = 0%, RTA = 0.80 msが入ります(引用記号は除きます)。

パフォーマンスデータ出力のフォーマット

Nagiosデーモンはパフォーマンスデータを直接処理せず、実際に処理するようになっていません。 本当に、少しの固有の制限の形式やパフォーマンスデータの内容にありません。 しかし、パフォーマンスデータを処理する外部アドオン(例:PerfParse)を使えば、 プラグインが返す特定の形式のパフォーマンスデータを予測できます。 詳細はアドオンの節を見てみて下さい。また、SourceForge (http://nagiosplug.sourceforge.net/) にあるプラグイン開発のドキュメントも見ておいて下さい。

パフォーマンスデータ処理を有効にする

Nagiosとプラグインからのパフォーマンスデータを処理したいのであれば、以下の作業を行う必要があります:

  1. process_performance_dataオプションを有効にする。

  2. パフォーマンスデータをファイルに書く、もしくは外部コマンドで処理するようNagiosをセットアップする。

パフォーマンスデータをファイルに出力する

FIXME あなたはNagiosに全ホストとサービスのパフォーマンスデータを host_perfdata_fileservice_perfdata_fileを使って、 ファイルに出力させる事ができます。 host_perfdata_file_templateservice_perfdata_file_template オプションを使ってどのように書き出すのかを制御することも出来ます。 さらに、 host_perfdata_file_processing_commandservice_perfdata_file_processing_command オプションを使ってNagiosから定期的にパフォーマンスデータファイルを処理させる事も可能です。

コマンドを使ってパフォーマンスデータを処理する

Nagiosにホストやサービスのパフォーマンスデータを host_perfdata_commandservice_perfdata_commandオプションを 使って処理させることが出来ます。 以下の例は単純にサービスパフォーマンスデータをファイルに書き出す処理です。

define command{
	command_name	process-service-perfdata
	command_line	/bin/echo -e "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$" >> /usr/local/nagios/var/service-perfdata.dat
	}