![check_nrpe がリモート スクリプトの実行を完了するまで待機するようにするにはどうすればよいですか?](https://rvso.com/image/567618/check_nrpe%20%E3%81%8C%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%20%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%AE%E5%AE%9F%E8%A1%8C%E3%82%92%E5%AE%8C%E4%BA%86%E3%81%99%E3%82%8B%E3%81%BE%E3%81%A7%E5%BE%85%E6%A9%9F%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
NRPE のプラグインとして使用されている Python スクリプトがあります。このスクリプトは、"ps ax | grep process" を添付した SSH ワンライナーを実行して、仮想マシン上でプロセスが実行されているかどうかを確認します。スクリプトを手動で実行すると、期待どおりに動作し、NRPE の 1 行の出力と、プロセスが実行中かどうかに基づくステータスが返されます。
このスクリプトを実行するためにコマンドsetupを実行しようとすると(Nagiosサーバーから)、即座に「NRPE: 出力を読み取れません」という出力が表示されますが、スクリプトを手動で実行すると、出力が返されるまでに約 1 秒かかります。他のコマンドは問題なく実行されるため、NRPE はすぐに失敗するのではなく、出力を 1 秒か 2 秒待つ必要があるようですが、これを実現する方法が見つかりません。何かヒントはありますか?
PS: 仮想マシンはホストマシン以外からはアクセスできないため、プロセスを確認するには nrpe プラグインを使用してホストから VM に SSH 接続する必要があります。
答え1
指示に従ってタイムアウトを変更できますここまたは検索タイムアウトNRPE ドキュメントただし、これはあなたの問題ではないと思います。そうでなければ、次のようなエラーが表示されるはずです。
CHECK_NRPE: Socket timeout after 270 seconds.
すでに書き込まれている必要なデータを返す Nagios プラグインもあるかもしれません。
答え2
なぜ使わないのかチェックプロセスプラグイン?
仮想マシン上で、サービス用のコマンドを次のように定義します/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>'
答え3
デフォルトのタイムアウトは約 10 秒だと思うので、おそらくそれではないと思います。
ssh を使用してチェックを実行する場合、nrpe はおそらくユーザー「nagios」として実行されていることに注意してください (インストール オプションによって異なります)。そのユーザーには適切なキーと ssh オプションがありますか?