重要:Nagiosはパフォーマンスデータの処理に異なる方法を使うことができます。このドキュメントはではNagiosをデフォルトパフォーマンスデータルーチンでコンパイルした時(つまりconfigureスクリプトで--with-default-perfdata引数を使った時)のパフォーマンスデータ処理の設定方法を記述しています。
イントロダクション
Nagiosをこのオプションでコンパイルした時、ホストやサービスチェックの後にのパフォーマンスデータを処理するコマンドを定義することができます。 これはパフォーマンスデータ処理の最も柔軟な方法ですが、定義したコマンドを実行に新しいプロセスを生成するためシステムにオーバーヘッドが多くかかります。
もし後で処理するため、単純にパフォーマンスデータをファイルにダンプする計画であれば、代わりにNagiosをファイルベース方式でコンパイルすることをお勧めします。ファイルにパフォーマンスデータを書き出す事は高速で(データをハンドルするのに新しいプロセス生成が必要な)デフォルト方式よりシステムのオーバーヘッドが少なくすみます。
ホストパフォーマンスデータの処理
ホストパフォーマンスデータを処理したいなら、メイン設定ファイルのhost_perfdata_commandディレクティブを以下のように追加します:
host_perfdata_command=<command_name>
このディレクティブは毎ホストチェックの後にパフォーマンスデータを処理するためのコマンドを指定します。メイン設定ファイルへの記述例は以下の通りです:
host_perfdata_command=process-host-perfdata
host_perfdata_commandディレクティブで指定した名前のコマンドはオブジェクト設定ファイルで設定されている有効なコマンドでなくてはなりません。コマンド定義では、ホストパフォーマンス処理コマンドで有効などんなマクロでも使うことができます。
単純にホストパフォーマンスデータ(最終チェック時間、実行時間、パフォーマンスデータなど)をファイルに記録するサンプルのコマンド定義は以下の通りです。この例では様々なパフォーマンスデータがタブ区切りのフォーマットでファイルに書き出されます。
define command{
command_name process-host-perfdata
command_line /bin/echo -e "$LASTCHECK$\t$HOSTNAME$\t$HOSTSTATE$\t$HOSTATTEMPT$\t$STATETYPE$\t$EXECUTIONTIME$\t$OUTPUT$\t$PERFDATA$" >> /usr/local/nagios/var/host-perfdata
}
サービスパフォーマンスデータの処理
サービスパフォーマンスデータを処理したいなら、メイン設定ファイルのservice_perfdata_commandディレクティブを以下のように追加します:
service_perfdata_command=<command_name>
このディレクティブは毎サービスチェックの後にパフォーマンスデータを処理するためのコマンドを指定します。メイン設定ファイルへの記述例は以下の通りです:
service_perfdata_command=process-service-perfdata
service_perfdata_commandディレクティブで指定した名前のコマンドはオブジェクト設定ファイルで設定されている有効なコマンドでなくてはなりません。コマンド定義では、サービスパフォーマンス処理コマンドで有効などんなマクロでも使うことができます。
単純にサービスパフォーマンスデータ(最終チェック時間、実行時間、パフォーマンスデータなど)をファイルに記録するサンプルのコマンド定義は以下の通りです。この例では様々なパフォーマンスデータがタブ区切りのフォーマットでファイルに書き出されます。
define command{
command_name process-service-perfdata
command_line /bin/echo -e "$LASTCHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$STATETYPE$\t$EXECUTIONTIME$\t$LATENCY$\t$OUTPUT$\t$PERFDATA$" >> /usr/local/nagios/var/service-perfdata
}
最適化のメモ
service_perfdata_commandディレクティブを使用していて、かつobsessing over サービスも使用しているのであれば、obsess_over_servicesオプションを無効にしてservice_perfdata_command処理を2倍にする方法があるでしょう。 ocsp_commandとservice_perfdata_commandコマンドは共にサービスチェックの後に毎回実行されるため、service_perfdata_commandをすべて統合することでオーバーヘッドを少し減少させることができるでしょう。