Monitoring

在 Icinga / Nagios 的服務名稱中使用 $ 監控服務

  • May 22, 2017

我正在嘗試在我的 Windows 伺服器上存在的幾個 MSSQL 實例上設置監控。這裡的問題是,如果服務名稱包含$(例如MSSQL$PROD),那麼 check_nt 命令將返回 null 警告。

以下是我所擁有的範例windows.cfg

define service{
       use                     generic-service
       host_name               SERVERNAME
       service_description     MSSQL Service
       check_command           check_nt!SERVICESTATE!-d SHOWALL -l MSSQL$PROD
       }

我嘗試用​​“”包圍服務名稱(它適用於帶有空格的服務)並在服務名稱中的 $ 之前放置一個反斜杠,但沒有運氣。有誰知道這是否可以做到?

你必須$用另一個$和單引號來轉義名稱:

define service{
       use                     generic-service
       host_name               SERVERNAME
       service_description     MSSQL Service
       check_command           check_nt!SERVICESTATE!-d SHOWALL -l 'MSSQL$$PROD'
       }

或者,您可以使用 . 省略單引號MSSQL\$$PROD。我更喜歡第一個電話;)

Krissi 有正確的答案。

我只想提一個可能更容易解析的選項:將您的命令定義更改為另一個$ARG$,因此這種轉義的複雜性在您的命令定義中而不是在每個服務中處理。所以現在你的服務看起來像:

check_command    check_nt!SERVICESTATE!-d SHOWALL -l MSSQL!PROD

在你的 commands.cfg 中:

command_line     /path/to/commmand --someopt value1 $ARG1$"$$"$ARG2$

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