使用 check_nrpe 时出现 NRPE 错误

使用 check_nrpe 时出现 NRPE 错误

我有 2 个 centos 服务器

服务器 1-centos 6.8

服务器2-centos 6.7

最初我在服务器 1 上遇到了这个问题,但我能够使用此处解释的修复方法修复我遇到的问题

NRPE 无法读取输出,但是为什么呢?

当我尝试在服务器 2 上进行相同的修复时,出现了如上述链接所述的错误。

root@server2 [/usr/local/nagios/libexec]# ./check_nrpe -H 127.0.0.1 -c check_exim
NRPE: Unable to read output

但如果我在本地运行命令,它就会起作用

root@server2 [/usr/local/nagios/libexec]#
/usr/local/nagios/libexec/check_exim_queue -c 20 -w 40 Mailqueue OK -
0 messages on queue

为了测试,我以用户身份运行了它,并且它可以工作

nagios@cloud-03 [/usr/local/nagios/libexec]# sudo /usr/local/nagios/libexec/check_exim_queue -c 20 -w 40
Mailqueue OK - 0 messages on queue

任何想法都会有帮助

答案1

在 nrpe 代理中启用调试

从:https://assets.nagios.com/downloads/nagioscore/docs/nrpe/NRPE.pdf

如何调试其他问题...调试问题时,编辑 NRPE 配置文件并将 debug=0 条目更改为 debug=1 可能会很有用。完成此操作后,如果 NRPE 守护进程作为独立守护进程运行,请重新启动它。再次尝试使用 check_nrpe 插件后,您应该能够在远程主机的日志文件中看到一些调试信息。仔细检查您的日志 - 它们应该能够帮助提供有关问题所在位置的线索...

答案2

我找到了问题所在。问题出在 check_mailq 插件上。经过一番挖掘和查看后,我终于修复了它。

修复方法是在脚本中添加 sudo 命令。

elsif ( $mailq eq "exim" ) {
        ## open mailq
        if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) {
                if (! open (MAILQ, "$utils::PATH_TO_MAILQ | " ) )

elsif ( $mailq eq "exim" ) {
        ## open mailq
        if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) {
                if (! open (MAILQ, "/usr/bin/sudo $utils::PATH_TO_MAILQ | " ) )

所以在做出这个改变之后

    root@server2 [/usr/local/nagios/libexec]# ./check_nrpe -H 127.0.0.1 -c check_exim    
OK: mailq (0) is below threshold (20/40)|unsent=0;20;40;0

谢谢您的帮助

相关内容