我正在使用 NRPE 监控一些 Linux 服务器,大多数检查都正常。实际上,唯一不起作用的检查是。从 Nagios 服务器终端check_disk
运行远程:check_disk
[root@nagios]# /usr/lib64/nagios/plugins/check_nrpe -H 10.200.X.X -c check_disk -a '-w 20% -c 10% /'
DISK OK - free space: / 271971 MB (97% inode=99%);| /=8321MB;236233;265762;0;295292
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"
,这使我相信这是服务或命令的编写方式存在问题,因此它们在这里:来自文件的命令/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.X.X
您知道如何解决这个问题吗?提前致谢
答案1
您向我们展示的数据是不自洽的。
在上nagios
,您可以显示自己通过使用 check_nrpe 调用服务器上的检查,monitored
如下所示:
[root@nagios]# /usr/lib64/nagios/plugins/check_nrpe -H 10.200.XX-c 检查磁盘-a'-w 20%-c 10%/'
但当你向我们展示monitored
的nrpe.cfg
文件时,检查已经定义用不同的名字:
命令[检查本地磁盘]=sudo /usr/lib64/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
(我很抱歉格式不对,但我希望能够突出显示,而不是等宽字体)。在我看来,参数的顺序也是错误的,但我并不是允许传递参数的 nrpe 配置方面的专家。
无论如何,的-c foo
参数必须与中的check_nrpe
相匹配,但事实并非如此。这只能意味着command[foo]
nrpe.cfg
任何一个你向我们展示的东西并非如此,或者您证明您可以check_nrpe
对错误的服务器进行调用。
编辑:我想我已经相当清楚如何尝试解决它了。你说 GUI 无法正确运行检查。好的。所以你说得对,正常的下一步是从命令行运行它,但对同一个客户进行同样的检查非常重要。您已经向我们展示了客户的nrpe.cfg
,因此假设客户确实10.200.X.X
,从服务器向我们展示结果
[root@nagios]# /usr/lib64/nagios/plugins/check_nrpe -H 10.200.X.X -c check_local_disk -a '-w 20% -c 10% /'
check_nrpe
查看服务器文件中的条目也很有用commands.cfg
,只是为了确认所有内容都正确。我们现在将尝试执行服务器正在执行的操作,因此如果上述命令失败,我们可以调试并修复失败。如果成功,我们必须更深入地研究。