我正在嘗試設定 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
希望這對路上的某個人有幫助。