nagios检查在nagios主机上失败,但在本地工作

我写了一个小的bash脚本来和nagios一起使用来检查nrpe是否在运行。

以root身份运行时检查在本地运行,但在监视主机上运行失败。

从我试图监视的主机,我在我的nrpe.conf中有这行:

command[check_nrpe]=/usr/lib64/nagios/plugins/check_nrpe.sh 

并确保检查脚本是由nagios用户拥有的:

 [root@ops:~] #ls -l /usr/lib64/nagios/plugins/check_nrpe.sh -rwxr-xr-x. 1 **nagios nagios** 203 Jun 9 20:29 **/usr/lib64/nagios/plugins/check_nrpe.sh** 

如果我以root用户身份运行脚本,我会得到正确的结果:

  [root@ops:~] #/usr/lib64/nagios/plugins/check_nrpe.sh OK: NRPE is running with pid: 24538 24538 

但是当我从nagios主机运行它时,检查产生相反的结果:

 [root@monitor1:~] #/usr/local/nagios/libexec/check_nrpe -H ops.mydomain.com -c check_nrpe **CRITICAL: NRPE is **NOT** Running** 

如果我回到主机,我试图监视并成为nagios用户,我得到的结果与我在nagios主机上的结果是一样的。

 [root@ops:~] #su - nagios Last login: Tue Jun 9 20:43:42 UTC 2015 on pts/3 -bash-4.2$ /usr/lib64/nagios/plugins/check_nrpe.sh **CRITICAL: NRPE is **NOT** Running** 

如果我给nagios用户sudo访问该脚本,我可以得到正确的结果作为本地主机上的nagios用户。

在/ etc / sudoers中,我给nagios用户访问命令并通过放置tty禁用tty:

  nagios ALL=(ALL) NOPASSWD: /usr/lib64/nagios/plugins/check_nrpe.sh !requiretty 

现在,如果我成为本地主机上的Nagios用户并使用sudo,则检查会产生正确的结果。

 [root@ops:~] #su - nagios Last login: Tue Jun 9 23:37:09 UTC 2015 on pts/0 -bash-4.2$ sudo /usr/lib64/nagios/plugins/check_nrpe.sh **OK: NRPE is running with pid: 24538** 24538 

如果我然后在本地主机上编辑我的nrpe conf文件以使用sudo before命令。 在nrpe.conf中我把:

 [root@ops:~] #grep check_nrpe /etc/nagios/nrpe.cfg command[check_nrpe]=/bin/sudo /usr/lib64/nagios/plugins/check_nrpe.sh 

然后重新启动nrpe服务:

 [root@ops:~] #systemctl restart nrpe [root@ops:~] #lsof -i :5666 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nrpe 6137 nrpe 4u IPv4 493404 0t0 TCP *:5666 (LISTEN) nrpe 6137 nrpe 5u IPv6 493405 0t0 TCP *:5666 (LISTEN) 

但是当我回到nagios主机并再次运行检查,我得到一个输出错误:

 [root@monitor1:~] #/usr/local/nagios/libexec/check_nrpe -H ops.jokefire.com -c check_nrpe **NRPE: Unable to read output** 

这是我的检查nrpe脚本的内容:

 [root@ops:~] #cat /usr/lib64/nagios/plugins/check_nrpe.sh #!/bin/bash pid=$(lsof -i :5666 | awk '{print $2}' | grep -i -v pid) if [[ $pid ]] then echo "OK: NRPE is running with pid: $pid" exit 0 else echo "CRITICAL: NRPE is **NOT** Running" exit 2 fi 

帮帮我!! 我如何得到这个检查从nagios主机返回正确的结果?

谢谢