![如何讓 check_nrpe 等待我的遠端腳本完成執行?](https://rvso.com/image/567618/%E5%A6%82%E4%BD%95%E8%AE%93%20check_nrpe%20%E7%AD%89%E5%BE%85%E6%88%91%E7%9A%84%E9%81%A0%E7%AB%AF%E8%85%B3%E6%9C%AC%E5%AE%8C%E6%88%90%E5%9F%B7%E8%A1%8C%EF%BC%9F.png)
我有一個 python 腳本,用作 NRPE 的插件。該腳本透過執行附加「ps ax | grep process」的 SSH 單行命令來檢查進程是否在虛擬機器上運行。手動執行腳本時,它會按預期工作,並傳回 NRPE 的單行輸出以及基於進程是否正在執行的狀態。
當我嘗試運行命令設定來執行此腳本(從我的 Nagios 伺服器)時,我即刻取得輸出“NRPE:無法讀取輸出”,但是當我手動執行腳本時,需要大約一秒鐘才能返回輸出。其他命令運行得很好,所以看起來 NRPE 需要等待一兩秒鐘才能輸出,而不是立即失敗,但我一直無法找到任何方法來完成此操作;有小費嗎?
PS:除了主機之外,虛擬機器無法從任何地方訪問,因此需要 nrpe 插件從主機 ssh 到虛擬機器來檢查進程。
答案1
答案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 選項?