Nagios使用check_ping监控主机

时间:2014-11-04 22:39:21

标签: nagios

我已经通过EPEL存储库在全新安装的CentOS 7上部署了一个新的Nagios实例。所以Nagios Core版本是3.5.1。

安装nagios和nagios-plugins-all(通过yum)后,我创建了许多主机和服务定义,用nagios -v /etc/nagios/nagios.cfg测试了我的配置,并启动并运行了Nagios!

不幸的是,我的主机检查失败了(尽管我的服务检查工作正常)。

在Nagios Web GUI / Dashboard中,如果我深入查看具有“主机状态信息”的主机页面,我会看到报告“状态信息”(已移除IP地址):

  

状态信息:/ usr / bin / ping -n -U -w 30 -c 5 {my-host-ip-address}

     

CRITICAL - 无法解释ping命令的输出

enter image description here

因此,在我的故障排除中,我深入了解Nagios Plugins目录(/ usr / lib64 / nagios / plugins),并使用check_ping插件运行测试,该插件与check-host-alive运行命令的方式一致(参见下文)对于我的check-host-alive命令定义):

./check_ping -H {my-ip-address} -w 3000.0,80% -c 5000.0,100% -p 5

此check_ping命令返回以下输出:

  

PING OK - 数据包丢失= 0%,RTA = 0.63   ms | rta = 0.627000ms; 3000.000000; 5000.000000; 0.000000 pl = 0%; 80; 100; 0

我没有改变check_ping如何工作的定义,并且只要命令的运行方式与check-host-alive运行命令一样,我就可以确认我得到了“PING OK”,所以我无法想象发生了什么事!

以下是check-host-alive和check_ping的命令定义。

# 'check-host-alive' command definition
define command{
        command_name    check-host-alive
        command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5
        }

{snip}

# 'check_ping' command definition
define command{
        command_name    check_ping
        command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
        }

有关如何修复check-host-alive命令定义以正常工作并正确评估check_ping输出的任何建议?

修改

以下是我正在使用的完整定义主机{}模板:

define host     {
        host_name                       myers    ; The name of this host template
        alias                           Myers
        address                         [redacted]
        check_command                   check-host-alive
        contact_groups                  admins
        notifications_enabled           0               ; Host notifications are enabled
        event_handler_enabled           1               ; Host event handler is enabled
        flap_detection_enabled          1               ; Flap detection is enabled
        failure_prediction_enabled      1               ; Failure prediction is enabled
        process_perf_data               1               ; Process performance data
        retain_status_information       1               ; Retain status information across program restarts
        retain_nonstatus_information    1               ; Retain non-status information across program restarts
        notification_period             24x7            ; Send host notifications at any time
        register                        1
        max_check_attempts              2
        }

4 个答案:

答案 0 :(得分:3)

我在/ usr / bin / ping

上找不到ping
# chmod u+s /bin/ping 

# ls -al /bin/ping 
-rwsr-xr-x 1 root root 40760 Sep 26  2013 /bin/ping*

最后运行以下命令,

 /usr/local/nagios/libexec/check_ping -H 127.0.0.1 -w 100.0,20% -c 500.0,60% -p 5

答案 1 :(得分:3)

对于遇到此问题的任何其他人,除了更改ping权限之外,还有另一种选择。只需将主机检查命令更改为使用check_host而不是check_ping。虽然功能上肯定存在一些差异,但总体最终结果是相同的。

有些人会说这不是一个很好的选择,因为能够对check_ping命令进行测距,但是应该记住,在所有服务检查之前,主机检查都没有执行对于给定的主机失败。无论如何,如果您对测试吞吐量感兴趣,那么有很多更好的方法来实现它,而不是依赖于ICMP,这是网络上最低优先级的流量类型。

我确信OP现在还处于其他方面,但希望有这个问题的其他人也会受益。

答案 2 :(得分:2)

我很确定运行chmod U+s /usr/bin/ping可以解决问题,但我(并且仍然)对chmod的系统文件保持警惕。在我看来,必须有一种更安全的方法来做到这一点。

然而,最后,这就是我所做的 - 而且它的确有效。从安全的角度来看,我不喜欢它,但也许我在这个问题上得到的“内裤太多了”。

答案 3 :(得分:0)

我也有同样的问题,以上答案对我没有用。经过一番检查后,问题进一步发现原因是IP协议。一旦我通过了正确的IP协议,它就可以正常工作。

/usr/local/nagios/libexec/check_ping -H localhost -w 3000.0,80% -c 5000.0,100% -4

输出

PING OK - Packet loss = 0%, RTA = 0.05 ms|rta=0.051000ms;3000.000000;5000.000000;0.000000 pl=0%;80;100;0

默认情况下,它正在获取IPv6。

/usr/local/nagios/libexec/check_ping -H localhost -w 3000.0,80% -c 5000.0,100% -6

输出

/sbin/ping6 -n -U -W 30 -c 5 localhost
CRITICAL - Could not interpret output from ping command

但是当与Nagios服务器集成时,我无法将此值作为参数传递。因此,我在客户端nrpe.cfg文件中完成了以下变通方法

command[check_ping_args]=/usr/local/nagios/libexec/check_ping -H $ARG1$ -w $ARG2$ -c $ARG3$ -4

Nagios主机在此处通过以下方式发送主机,警告和严重阈值,

define service{
    use                             generic-service        
    hostgroup_name                  all-servers
    service_description             Host Ping Status
    check_command                   check_nrpe_args!check_ping_args!localhost!3000.0,80%!5000.0,100%

}