我已经在某台服务器上安装了 NRPE 和 SNMP,因为我想用 Nagios 来监控这台服务器。我有一些检查已经正常运行,并且我得到了预期的输出。今天,我安装了check_ifstatus
Nagios 命令,以便监控我的一台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。
- 确保您的 Nagios 盒的 IP 在 allowed_hosts 列表中。
- 通过运行“check_nrpe -H dbr4”查看是否可以与 NRPE 守护进程通信,无需其他参数。您应该会得到 NRPE 版本号
- 检查nrpe.cfg中的“command[check_ifstatus]”行是否与您的手动测试相符。
答案2
Keith 的回答是最正确的;您不需要使用 NRPE 进行 SNMP 检查,而且它会增加不必要的复杂性。
也就是说,这里最有可能的直接问题是 SELinux,除非您知道您已将其关闭。getenforce
在 NRPE 主机上运行;如果它显示“Enforcing”,则表示已启用 SELinux。如果已启用 SELinux,请check_nrpe
从您的 Nagios 主机运行该命令,然后检查/var/log/audit/audit.log
NRPE 主机。如果其中有“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 策略的过程。