【问题标题】:Nagios Monitoring Hosts with check_pingNagios 使用 check_ping 监控主机
【发布时间】:2014-11-04 22:39:20
【问题描述】:

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

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

很遗憾,我的主机检查失败(尽管我的服务检查工作正常)。

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

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

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

所以在我的故障排除中,我深入到 Nagios 插件目录 (/usr/lib64/nagios/plugins),并使用与 check-host-alive 运行命令的方式一致的 check_ping 插件运行测试(见下文对于我的 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
        }

【问题讨论】:

  • 你确定nagios用户可以运行ping命令了吗?
  • 您为“状态信息”显示的不是它应有的样子。该输出中不应有对 /usr/bin/ping 的引用,即使失败也是如此。
  • @MrCleanX - 我读过一些博客文章,建议我检查一下。我有点担心去 chmod ping 二进制文件(这是大多数博客文章所建议的)。还有其他(更安全的)选项,例如将 Nagios 用户添加到 ping 的组或其他什么?
  • @JimBlack - 嗯,这就是我看到的错误。我已经截取了屏幕截图,并正在使用屏幕截图更新问题。
  • 此主机的“定义主机”条目是什么? Nagios 似乎没有运行正确的命令。我的总是以“PING:OK...”或“PING:CRITICAL...”开头

标签: nagios


【解决方案1】:

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

有些人会说这不是一个好的选择,因为它可以对check_ping 命令进行范围,但应该记住,在给定主机的所有服务检查完成之前,甚至不会执行主机检查失败的。无论如何,如果您对测试吞吐量感兴趣,有比依赖ICMP(网络上优先级最低的流量类型)更好的方法。

我确信 OP 现在在其他方面做得很好,但希望遇到此问题的其他人会受益。

【讨论】:

  • OP 还在潜伏。 :) 这是一篇极好的帖子。我不记得我何时(或为什么)开始使用 check_host,但这确实是我目前正在使用的。
  • 是否有名为 check_hosts 的插件?不过我找不到。
  • 其实叫check_host,不带's'。它通过 'apt-get install nagios-plugins' 安装在 Debian 上,并通过 RPM 安装在 Redhat/Fedora 上,例如 nagios-plugins-2.2.1-4git.fc26.aarch64.rpm。
【解决方案2】:

我在 /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

【讨论】:

  • ping 可以存在于不同的目录中,具体取决于您的 Linux 变体。不建议更改系统文件的权限。最好使用check_host 并避免制造潜在问题。
【解决方案3】:

我相当肯定运行chmod U+s /usr/bin/ping 会解决这个问题,但我(现在仍然)对chmod'ing 系统文件持谨慎态度。在我看来,必须有一种更安全的方法来做到这一点。

但是,最后,我就是这么做的——而且效果很好。从安全的角度来看,我不喜欢它。

【讨论】:

  • 我觉得很奇怪,/usr/bin里面有普通用户不能运行的条目?该文件夹中的所有内容都应位于 0755。
【解决方案4】:

我也有同样的问题,上面的答案对我不起作用。经过一些检查问题进一步注意到原因是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%

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多