我已经在某些服务器上安装了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在所有机器上都被禁用。
你为什么使用NRPE通过SNMP检查事物? 你可以直接从Nagios框中检查,假设snmp正在监听一个外部接口(你似乎想要通过netstat评论来判断,尽pipe找了一个错误的端口)。
除非您编译了没有SSL支持的NRPE,否则不应该使用-n。
(另外,你不需要指定-p 5666 ,因为这是默认的,和-t 10一样 。)
基思的回答是最正确的; 您不需要使用NRPE来执行SNMP检查,并且会增加不必要的复杂性。
也就是说,这里最可能出现的问题是SELinux,除非你知道你关掉了它。 在NRPE主机上运行getenforce ; 如果它说“强制”,SELinux被启用。 如果启用了SELinux,请从Nagios主机运行check_nrpe命令,然后检查NRPE主机上的/var/log/audit/audit.log 。 如果在那里有“type = AVC”的行说“avc:denied”,那么你可能会碰到一个SELinux限制。
避免这种情况的简单方法是通过编辑/etc/selinux/config将SELinuxclosures,并将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'来使它们成为永久semanage fcontext -a -t nagios_system_plugin_exec_t '/usr/lib(64)?/nagios/plugins/check_ifstatus' 。
如果这些都不起作用,那么您可能会遇到一些使用回送地址的进程限制,您必须查看AVC消息并制定您自己的SELinux策略。 我没有做足够的build议(除了“直接从您的Nagios主机检查SNMP;这是什么SNMP”),但有一些参考网上有关这样做。 YOu可能想要审视audit2allow ,这有助于对SELinux策略进行修改。