Configuration
Nagios 為 Windows 環境下的 nrpe 命令定義服務
我正在嘗試配置 Nagios 來監控我們的網路,它都是基於 Windows 的。我對它完全陌生,所以請原諒我的幼稚。事實是:我正在努力完成一項任務。
我想要實現的是讓 Nagios 告訴我遠端服務/程序是否正在執行。我已經安裝了 NSClilent++ 並在客戶端機器上工作。事實上,如果我在 Nagios 伺服器的命令行中執行以下程式碼,它就可以工作:
check_nrpe -H [ip_of_NSClient++] -c check_service -a 'service=[service_name]' "critical=state = 'stopped'"
我的問題是:如何在 [ host ].cfg 文件中定義服務來呼叫上面的命令?
現在我在我的 commands.cfg 文件中定義了這個:
define command { $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG1$ }
可以呼叫簡單的服務,例如
$$ check_cpu $$或者$$ check_disk $$但僅此而已。 到目前為止,我所做的所有嘗試總是導致(我認為)不穩定的錯誤消息,例如:
- (標準輸出沒有輸出) 標準錯誤:無法解析主機名 $:名稱或服務未知。或者
- CHECK_NRPE:從伺服器接收到的數據包類型無效。
Windows 服務的 nrpe 客戶端中有一個特定的檢查
這是:
check_command check_windows_service!"<display name of the service>"
您必須輸入服務的顯示名稱,因為它出現在 Windows 服務管理器中。
我通常使用 Old Skool
define service{ use generic-service ; Name of service host_name YourServer service_description YourService check_command check_nt!SERVICESTATE!-d SHOWALL -l YourService }
也就是說,我拿出我的 check_nrpe 定義並發現:
# this command runs a program $ARG1$ with arguments $ARG2$ define command { command_name check_nrpe command_line /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$ } # this command runs a program $ARG1$ with no arguments define command { command_name check_nrpe_1arg command_line /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
老實說,我不記得我是否創建了第二個(不過我可能做過)。但是,您的 ARG1 指定了兩次,而您有兩個參數:
define command { $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG1$ }
應該是
define command { $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$ }