パフォーマンスデータ
目次
導入 Introduction
Nagiosは プラグイン が返すステータスデータにパフォーマンスデータをつける事を許容しており、外部で動作するアプリケーションに処理させることも許容しています。パフォーマンスデータのタイプの違いの記述はデータ処理をどのように行うかというの情報は以下で述べます・・・
パフォーマンスデータのタイプ Types of Performance Data
Nagiosから得られるパフォーマンスデータには2つの基本的なカテゴリがあります:
- チェックパフォーマンスデータ
- プラグインパフォーマンスデータ
チェックパフォーマンスデータはホストやサービスチェックの実際の実行と関係のある内部データです。これはサービスチェック遅延 (例:サービスチェックが予定された時間と比べてどれだけ"遅れて"実行されたか) とホスト、サービスチェックの実行時間がどれぐらいであったかと言うことが含まれています。このタイプのパフォーマンスデータは実行される全チェックで有効です。 $HOSTEXECUTIONTIME$と$SERVICEEXECUTIONTIME$、 マクロ にてホスト、サービスチェックの実行時間を取得でき、 $HOSTLATENCY$と$SERVICELATENCY$ マクロにてホスト、サービスチェック実行がどれぐらい"遅延"しているか取得できます
プラグインパフォーマンスデータ はホスト、サービスチェックで使用する特定のプラグインの外部データです。プラグイン特有のデータにはパケットロスのパーセンテージ、ディスク空き容量、CPU負荷、現在のログインユーザ数などの情報が含まれています。 - 基本的にはプラグインが実行されたときの任意のメトリックタイプです。プラグイン特有のパフォーマンスデータはオプションで、プラグインによっては対応していないものもあるでしょう。プラグイン特有のパフォーマンスデータは(もし対応していれば) $HOSTPERFDATA$ と $SERVICEPERFDATA$ マクロで取得できます。プラグインがどのように$HOSTPERFDATA$と$SERVICEPERFDATA$マクロへ加わりNagiosにパフォーマンスデータを返すことができるかについて、詳細は読んでください。
プラグインパフォーマンスデータ Plugin Performance Data
通常はプラグインは計測データのタイプの状態を示した1行のテキストを返します。たとえばcheck_pingプラグインはおそらく次の行を返すでしょう:
PING ok - Packet loss = 0%, RTA = 0.80 ms
このシンプルな出力のタイプは、$HOSTOUTPUT$か$SERVICEOUTPUT$ macros で利用可能です (このプラグインがホストチェックで使われているのか、サービスチェックで使われているのかによる)。
プラグインが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" (引用記号は除く) を保存し、$HOSTPERFDATA$または$SERVICEPERFDATA$マクロは "percent_packet_loss=0, rta=0.80" (引用記号は除く)を保存します。
パフォーマンスデータ(通常のテキスト出力と同様)の複数のラインがプラグインから得られることは、プラグインAPIドキュメンテーションに記述されています。
note: Nagiosデーモンはプラグインパフォーマンスデータを直接処理しないので、パフォーマンスデータがどのように見えるのか、全く気にしません。 パフォーマンスデータのフォーマットまたは内容に本来は限界が全くありません。しかし、パフォーマンスデータを処理するために外部アドオン(例:PerfParse)を使用しているならば、アドオンはプラグインが特定のフォーマットでパフォーマンスデータを返すと予想しているかもしれません。アドオンの詳細な情報はドキュメンテーションをチェックしてください。
パフォーマンスデータ処理 Processing Performance Data
Nagiosとプラグインからのパフォーマンスデータを処理したいのであれば、以下の作業を行う必要があります:
- process_performance_dataオプションを有効にする。
- パフォーマンスデータをファイルに書く、もしくは外部コマンドで処理するようNagiosをセットアップする。
パフォーマンスデータの処理をファイルに書いて実行するか、コマンドで実行するかはインフォメーションを読んでください。
コマンドを使ってパフォーマンスデータを処理する Processing Performance Data Using Commands
パフォーマンスデータを処理する最も柔軟な方法は、Nagiosに後で処理をさせるために外部アプリケーションでデータを処理するか、リダイレクト命令(あなたが指定する)を実行させることです。 それぞれ、Nagiosがプロセスホストとサービスパフォーマンスデータに実行するコマンドは、 host_perfdata_command と service_perfdata_commandオプションで測定されます。
他のアプリケーションで後で処理するためにサービスチェックパフォーマンスデータをテキストファイルにリダイレクトする命令定義の例は、下記になります:
define command{ command_name store-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 }
Tip: この柔軟な方法の間は、CPUのオーバーヘッドが比較的高くなります。多数のホストとサービスのためにパフォーマンスデータを処理しているならば、多分あなたはNagiosがその代わりにファイルにパフォーマンスデータを書くことを望むでしょう。この方法は、次のセクションで記述されます。
パフォーマンスデータをファイルに出力する Writing Performance Data To Files
Nagiosが直接、host_perfdata_fileとservice_perfdata_fileオプションを使用しているテキストファイルにすべてのホストとサービスパフォーマンスデータを書くことができます。ホストとサービスパフォーマンスデータがファイルに書かれるフォーマットは、host_perfdata_file_templateと service_perfdata_file_templateオプションで測定されます。
サービスパフォーマンスデータのファイルフォーマットテンプレートの例は、このようになるかもしれません:
service_perfdata_file_template=[SERVICEPERFDATA]\t$TIMET$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$
デフォルトで、テキストファイルは"append"モードで開けられます。"write"モードまたは"non-blocking read/write"(パイプに書くとき、役に立つ)に変える必要があるならば、 host_perfdata_file_mode と service_perfdata_file_mode オプションを使用します。
さらに、定期的にNagiosにhost_perfdata_file_processing_command と service_perfdata_file_processing_command オプションを使用しているパフォーマンスデータファイルを処理しなさいという命令(例:入れ替える)を実行させることができます。これらの命令が実行される間隔は、 host_perfdata_file_processing_interval と service_perfdata_file_processing_interval オプションによって管理されます。