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

希望这对以后的某人有所帮助。

相关内容