如何讓 check_nrpe 等待我的遠端腳本完成執行?

如何讓 check_nrpe 等待我的遠端腳本完成執行?

我有一個 python 腳本,用作 NRPE 的插件。該腳本透過執行附加「ps ax | grep process」的 SSH 單行命令來檢查進程是否在虛擬機器上運行。手動執行腳本時,它會按預期工作,並傳回 NRPE 的單行輸出以及基於進程是否正在執行的狀態。

當我嘗試運行命令設定來執行此腳本(從我的 Nagios 伺服器)時,我即刻取得輸出“NRPE:無法讀取輸出”,但是當我手動執行腳本時,需要大約一秒鐘才能返回輸出。其他命令運行得很好,所以看起來 NRPE 需要等待一兩秒鐘才能輸出,而不是立即失敗,但我一直無法找到任何方法來完成此操作;有小費嗎?

PS:除了主機之外,虛擬機器無法從任何地方訪問,因此需要 nrpe 插件從主機 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 選項?

相關內容