CentOS:无法读取远程服务器上的 nrpe/snmp 代理的输出,但它在本地工作,我做错了什么?

CentOS:无法读取远程服务器上的 nrpe/snmp 代理的输出,但它在本地工作,我做错了什么?

我已经在某台服务器上安装了 NRPE 和 SNMP,因为我想用 Nagios 来监控这台服务器。我有一些检查已经正常运行,并且我得到了预期的输出。今天,我安装了check_ifstatusNagios 命令,以便监控我的一台mysql服务器上网络接口卡的状态。在服务器上本地运行时,check_ifstatus我正确地获得了相关信息:

[root@dbr4 nagios]# /usr/lib64/nagios/plugins/check_ifstatus -H localhost
    OK: host 'localhost', interfaces up: 4, down: 0, dormant: 0, excluded: 0, unused: 0    |up=4,down=0,dormant=0,excluded=0,unused=0
[root@dbr4 nagios]#

但是当我从 Nagios 服务器运行命令时出现以下错误:

[root@monitorvm ~]# /usr/lib64/nagios/plugins/check_ifstatus -H amadbr4
CRITICAL: No response from remote host 'dbr4' for 1.3.6.1.2.1.2.2.1.8  with snmp version 1
[root@monitorvm ~]#

这是否意味着我必须在要检查的服务器上启用 snmp?有没有办法使用 NRPE 来运行此检查?所有机器上的 SELINUX 都已禁用。

答案1

为什么要使用 NRPE 通过 SNMP 检查事物?您可以直接从 Nagios 框中检查这些内容,假设 snmp 正在监听外部接口(根据 netstat 注释判断,您似乎想要这样做,尽管您寻找的是错误的端口)。

除非您编译了不带 SSL 支持的 NRPE,否则您不应该使用 -n。

(另外,你不需要指定-p 5666,因为这是默认设置。-t 10

  1. 确保您的 Nagios 盒的 IP 在 allowed_hosts 列表中。
  2. 通过运行“check_nrpe -H dbr4”查看是否可以与 NRPE 守护进程通信,无需其他参数。您应该会得到 NRPE 版本号
  3. 检查nrpe.cfg中的“command[check_ifstatus]”行是否与您的手动测试相符。

答案2

Keith 的回答是最正确的;您不需要使用 NRPE 进行 SNMP 检查,而且它会增加不必要的复杂性。

也就是说,这里最有可能的直接问题是 SELinux,除非您知道您已将其关闭。getenforce在 NRPE 主机上运行;如果它显示“Enforcing”,则表示已启用 SELinux。如果已启用 SELinux,请check_nrpe从您的 Nagios 主机运行该命令,然后检查/var/log/audit/audit.logNRPE 主机。如果其中有“type=AVC”的行显示“avc: denied”,则您可能遇到了 SELinux 限制。

避免这种情况的简单方法是通过编辑/etc/selinux/config和设置SELINUX为关闭 SELinux permissive(如果您计划在某个时候在此系统上重新启用 SELinux)或disabled(如果您确定不想在此系统上再次运行 SELinux)。当然,如果您这样做,您显然会失去 SELinux 的好处。

您可以通过更改check_ifstatus插件的 SELinux 上下文来解决这个问题。您可以使用 检查其上下文ls -Z。在我的系统上(使用标准目标策略),它具有上下文“system_u:object_r:nagios_system_plugin_exec_t:s0”,其中“nagios_system_plugin_exec_t”是重要部分。如果将其设置为“nagios_system_plugin_exec_t”(使用chcon -t nagios_system_plugin_exec_t check_ifstatus)不起作用,请尝试使用“nagios_unconfined_plugin_exec_t”。如果这些更改中的任何一个有效,您必须使用 使它们永久生效semanage fcontext -a -t nagios_system_plugin_exec_t '/usr/lib(64)?/nagios/plugins/check_ifstatus'

如果上述方法都不起作用,那么您可能遇到了使用环回地址的进程的一些限制,并且您必须查看 AVC 消息并制定自己的 SELinux 策略。我在这方面做得还不够,无法提供建议(除了“直接从您的 Nagios 主机检查 SNMP;这就是 SNMP 的用途”),但网上有一些关于如何执行此操作的参考资料。您可能需要查看audit2allow,这有助于适应 SELinux 策略的过程。

相关内容