我使用NRPE来监视一些Linux服务器,大部分检查都在工作。 实际上,唯一不起作用的检查是check_disk 。 从Nagios服务器terminal运行远程check_disk ,:
[root@nagios]# /usr/lib64/nagios/plugins/check_nrpe -H 10.200.XX -c check_disk -a '-w 20% -c 10% /' DISK OK - free space: / 271971 MB (97% inode=99%);| /=8321MB;236233;265762;0;295292
从受监控服务器的terminal运行本地check_disk :
[root@Monitored ~]# /usr/lib64/nagios/plugins/check_nrpe -H 127.0.0.1 -c check_disk -a '-w 20% -c 10% /' DISK OK - free space: / 271971 MB (97% inode=99%);| /=8321MB;236233;265762;0;295292
这个check_disk命令在它检查的每个服务器上返回错误"CHECK_NRPE: Error receiving data from daemon"出错"CHECK_NRPE: Error receiving data from daemon" ,这导致我相信这是服务或命令写入方式的问题,所以它们是: /etc/nagios/nrpe.cfg文件:
[root@Monitored ~]# grep disk /etc/nagios/nrpe.cfg command[check_local_disk]=sudo /usr/lib64/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
/etc/nagios/commands.cfg文件中的命令:
# 'check_local_disk' command definition define command{ command_name check_local_disk command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$ }
来自services.cfg文件的服务:
define service{ servicegroups Basic Functionality hostgroup_name db_hosts,vm_hosts,linux_hosts host_name localhost service_description Check free disk space / check_command check_nrpe!check_local_disk!20%!10%!/ use generic-service }
这里是check_nrpe的命令定义:
define command{ command_name check_nrpe command_line /usr/lib64/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
以下是关于受监控服务器上/var/log/messages有关NRPE的信息:
Jun 10 12:57:01 virt2 nrpe[755]: INFO: SSL/TLS initialized. All network traffic will be encrypted. Jun 10 12:57:01 virt2 nrpe[756]: Starting up daemon Jun 10 12:57:01 virt2 nrpe[756]: Server listening on 0.0.0.0 port 5666. Jun 10 12:57:01 virt2 nrpe[756]: Server listening on :: port 5666. Jun 10 12:57:01 virt2 nrpe[756]: Warning: Daemon is configured to accept command arguments from clients! Jun 10 12:57:01 virt2 nrpe[756]: Listening for connections on port 0 Jun 10 12:57:01 virt2 nrpe[756]: Allowing connections from: 127.0.0.1,10.200.XX
你有什么想法如何解决这个问题? 提前致谢
您向我们展示的数据是自相矛盾的。
在nagios ,你显示自己调用check_nrpe monitored的服务器上的检查,如下所示:
[root @ nagios]#/ usr / lib64 / nagios / plugins / check_nrpe -H 10.200.XX -c check_disk -a' – w 20%-c 10%/'
但是当您向我们显示monitored的nrpe.cfg文件时,检查nrpe.cfg 不同的名称定义:
命令[ check_local_disk ] = sudo / usr / lib64 / nagios / plugins / check_disk -w $ ARG1 $ -c $ ARG2 $ -p $ ARG3 $
(我对缺less格式表示歉意,但我希望能够突出显示超过我想要的等宽字体)。 在我看来,参数的顺序也是错误的,但我不是专家的nrpeconfiguration,允许parameter passing。
无论如何, check_nrpe的-c foo参数必须与nrpe.cfg中的command[foo]匹配,而不是。 这只能意味着你向我们展示的东西不是这样, 或者你certificate你可以在错误的服务器上调用check_nrpe 。
编辑 :我想我已经相当清楚,试图解决它。 你说GUI不能正确运行检查。 好。 所以你是正确的,下一步的正常工作是从命令行运行它, 但是对同一个客户端运行相同的检查是非常重要的 。 你向我们展示了客户端的nrpe.cfg , 假设客户端真的是10.200.XX ,从服务器向我们展示了结果
[root@nagios]# /usr/lib64/nagios/plugins/check_nrpe -H 10.200.XX -c check_local_disk -a '-w 20% -c 10% /'
从服务器的commands.cfg文件中查看check_nrpe条目也是很有用的,只是为了确认所有的行。 现在我们将尝试执行服务器的操作,所以如果上面的命令失败了,我们可以debugging和修复这个失败。 如果成功了,我们必须更加深入一点。