Configuration

Nagios 為 Windows 環境下的 nrpe 命令定義服務

  • February 26, 2016

我正在嘗試配置 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$
   }

引用自:https://serverfault.com/questions/760045