web-dev-qa-db-ja.com

リモートスクリプトの実行が完了するまでcheck_nrpeを待機させるにはどうすればよいですか?

NRPEのプラグインとして使用されているpythonスクリプトがあります。このスクリプトは、「ps ax |」を使用してSSHワンライナーを実行することにより、プロセスが仮想マシンで実行されているかどうかを確認します。スクリプトを手動で実行すると、期待どおりに機能し、NRPEの1行の出力と、プロセスが実行されているかどうかに基づくステータスが返されます。

コマンドセットアップを実行してこのスクリプトを(Nagiosサーバーから)実行しようとすると、即座に出力「NRPE:出力を読み取れません」を取得しますが、スクリプトを手動で実行すると、約出力を返す1秒前。他のコマンドは問題なく実行されるため、NRPEはすぐに失敗するのではなく、出力を1〜2秒待つ必要があるように見えますが、これを実現する方法を見つけることができませんでした。任意のヒント?

PS:仮想マシンはホストマシン以外からはアクセスできないため、プロセスをチェックするために、nrpeプラグインがホストからVMにsshする必要があります。

1
Rauffle

ここ の指示に従うか、 nrpeドキュメント でタイムアウトを検索することでタイムアウトを変更できますが、これはあなたの問題ではないと思います。そうしないと、エラーが表示されます。このような:

CHECK_NRPE: Socket timeout after 270 seconds.

すでに書き込まれている必要なデータを返すnagiosプラグインもおそらくあります。

2
bdashrad

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>'
1
quanta

デフォルトのタイムアウトは約10秒だと思うので、おそらくそうではありません。

Sshを使用してチェックを実行している場合は、nrpeがおそらくユーザー「nagios」として実行されていることに注意してください(インストールオプションによって異なります)。そのユーザーは正しいキーとsshオプションを持っていますか?

0
cjc