Nagios check_procs 不報告不是由 root 產生的進程

Nagios check_procs 不報告不是由 root 產生的進程

我正在嘗試設定 Nagios 來監視負載平衡器上的 nginx 服務,但未能成功顯示服務正在運行。命令和服務定義如下。似乎任何不是由 root 產生的進程都不會顯示為正在運行。 nginx 進程由 www-data 運行。我什至嘗試了一些簡單的方法,例如讓它檢查我在不同用戶下運行的“頂級”進程。只要我選擇一個由 root 運行的進程,我在下面介紹的內容就可以正常運作。如果該進程是由任何其他使用者產生的,它將顯示為關鍵進程並且不起作用。有什麼想法嗎?

    define command {
        command_name    check_nginx
        command_line    $USER1$/check_procs -c 1: -C nginx
}


define service {
   use                  local-service
   host_name            my_host
   service_description  Load Balance Service
   check_command        check_nginx
}

答案1

在嘗試了 check_proc 插件中包含的所有不同選項但一無所獲之後,我決定採取不同的路線。我創建了以下 python 腳本並將其包含在插件目錄中。 python 腳本名稱是 check_service.py。如果您將其命名為其他名稱,則必須相應地修改下面的服務和命令。

   import os

status = os.system('systemctl is-active --quiet nginx')
if status == 768:
  print('Critical, Service is not running')
  exit(2)
elif status == 0:
 print('OK, Service is Running')
 exit(0)

然後,我將以下命令新增至commands.cfg 檔案中。 $ARG1$ 用於我正在開發的腳本的未來版本。這不是必需的。

define command{
    command_name    check_service
    command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_service $ARG1$
    }

像這樣定義服務

define service {
    use                             local-service
    host_name                       debian
    service_description             Load Balance Service
    check_command                   check_service
    }

然後在客戶端上我將此命令加入到 nrpe.cfg 檔案中

command[check_service]=python3 /usr/lib/nagios/plugins/check_service.py

希望這對路上的某個人有幫助。

相關內容