![nagios nrpe check_procs 错误返回值](https://linux22.com/image/575644/nagios%20nrpe%20check_procs%20%E9%94%99%E8%AF%AF%E8%BF%94%E5%9B%9E%E5%80%BC.png)
我的 nagios 监控出了问题。我正尝试使用 nrpe 检查远程主机上的进程。
该主机已经被 nagios 监控,因此我只需要向 nrpe.cfg 文件添加一行。甚至已经定义了 check_procs 检查,因此我可以使用该示例。
如此简单,你可能想不通,但事实并非如此。我检查是否可以手动运行命令,没有问题!
ubuntu@host:/usr/lib/nagios/plugins$ ./check_procs -w 1:1 -c 1:1 -a delayed_job
PROCS OK: 1 process with args 'delayed_job'
ubuntu@host:/usr/lib/nagios/plugins$ sudo ./check_procs -w 1:1 -c 1:1 -a delayed_job
PROCS OK: 1 process with args 'delayed_job'
这是我的nrpe.cfg文件的一部分:
command[check_procs]=/usr/lib/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
command[check_proc_name]=/usr/lib/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ -a $ARG3$
第一个检查 check_procs 是否被正确监控,最后一行是我添加的,但响应如下:进程严重:2 个进程带有参数“delayed_job”
这是我的服务文件:
define service {
use generic-service
host_name imobiel.limburger.nl
service_description Check Delayed Job Proces
check_command check_nrpe!check_proc_name!1:1 1:1 delayed_job
}
有人知道吗?我已经重启了 nagios 服务器和 nrpe 服务器好几次了!希望有人也遇到过同样的问题?
提前致谢。
答案1
我认为这是 check_procs 中的一个错误:它似乎在从 nrpe 运行时自行恢复,而不是从命令行运行。可能是某种竞争条件。
根据命令提示符,我看到您正在运行 Ubuntu。使用 Lucid 上的 check_procs,我可以执行以下操作:
/usr/lib/nagios/plugins/check_procs --ereg-argument-array="[s]tring" -w 1:1
因此,我们将对参数列表进行模式匹配,但这样 check_procs 进程就不会被匹配。将模式的一个字符放入方括号中会导致表达式与“string”匹配,但显然不会与 check_procs 参数“[s]tring”匹配。
但是,Hardy 上可用的 check_procs 没有正则表达式选项。
答案2
主机上的 /bin/ps 输出存在问题。默认情况下,“check_procs”二进制文件在检查的系统上执行“/bin/ps -axwo”,这会剪切参数字符串。只需从源代码重新编译 nagios-plugins。在版本 1.4.15 上必须设置配置选项:
./configure --enable-extra-opts=yes --with-ps-command="/bin/ps -axwwo 'stat uid pid ppid vsz rss pcpu ucomm command'" --with-ps-format="%s %d %d %d %d %d %f %s %n" --with-ps-cols=9 --with-ps-varlist="procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos"
当我们设置 -axWWo - ps 时,我们会得到完整的参数字符串。抱歉,我有点内疚。
答案3
您使用的是哪个版本的 nagios-plugins?1.4.15 中的 check_procs 没有表现出这种行为。不过,我还没有检查过更早的版本。
在手动测试末尾添加“-vv”或“-vvv”,您就可以准确验证它正在运行什么“ps”命令、它看到什么以及它认为匹配什么。
如果你是实际上让 Nagios 同时运行“check_procs”和“check_proc_name”,因为它们在 nrpe.cfg 代码片段中定义,同时使用完全相同的参数……那么很有可能他们会互相接在计数中。但是,为什么要运行两次做同样事情的检查呢?
答案4
我实际上也遇到过这个问题,对我来说定义用户是有效的。例如 -u root。由于 NRPE 服务器以 Nagios 用户身份运行检查,因此明确调用用户可避免此问题。