NRPEのプラグインとして使用されているpythonスクリプトがあります。このスクリプトは、「ps ax |」を使用してSSHワンライナーを実行することにより、プロセスが仮想マシンで実行されているかどうかを確認します。スクリプトを手動で実行すると、期待どおりに機能し、NRPEの1行の出力と、プロセスが実行されているかどうかに基づくステータスが返されます。
コマンドセットアップを実行してこのスクリプトを(Nagiosサーバーから)実行しようとすると、即座に出力「NRPE:出力を読み取れません」を取得しますが、スクリプトを手動で実行すると、約出力を返す1秒前。他のコマンドは問題なく実行されるため、NRPEはすぐに失敗するのではなく、出力を1〜2秒待つ必要があるように見えますが、これを実現する方法を見つけることができませんでした。任意のヒント?
PS:仮想マシンはホストマシン以外からはアクセスできないため、プロセスをチェックするために、nrpeプラグインがホストからVMにsshする必要があります。
ここ の指示に従うか、 nrpeドキュメント でタイムアウトを検索することでタイムアウトを変更できますが、これはあなたの問題ではないと思います。そうしないと、エラーが表示されます。このような:
CHECK_NRPE: Socket timeout after 270 seconds.
すでに書き込まれている必要なデータを返すnagiosプラグインもおそらくあります。
check_proc プラグインを使用しないのはなぜですか?
仮想マシンで、サービスのコマンドを/etc/nagios/nrpe.cfg
で定義します。
command[check_<service_name>]=/usr/lib64/nagios/plugins/check_procs -c 1:1 -C <service_name>
およびNagiosサーバーから:
define service{
use critical-service
Host_name xx
service_description <service_name>
check_command check_nrpe!check_<service_name>
event_handler autostart_<service_name>!xx
process_perf_data 0
contact_groups admin
}
サンプル結果:
# su - nagios -s /bin/bash
-bash-3.2$ /usr/local/nagios/libexec/check_nrpe -H xx -c check_<service_name>
PROCS OK: 1 process with command name '<service_name>'
デフォルトのタイムアウトは約10秒だと思うので、おそらくそうではありません。
Sshを使用してチェックを実行している場合は、nrpeがおそらくユーザー「nagios」として実行されていることに注意してください(インストールオプションによって異なります)。そのユーザーは正しいキーとsshオプションを持っていますか?