是否有可能在 nagios 中在服务通知之前检查主机是否关闭

是否有可能在 nagios 中在服务通知之前检查主机是否关闭

是否可以让 nagios 在发送服务故障之前检查主机是否关闭?如果主机关闭或重新启动,我们会收到很多服务通知,但只需要 1 个主机关闭即可。

这确实是一个令人烦恼的问题,因为我们将 nagios 链接到了我们的票务系统

更新

我不确定发生了什么,我们有 2 个 nagios 环境,我刚刚从其他部门继承了这个环境,这是他们的主要抱怨之一(这对我来说也是新鲜事,因为我自己的环境有更多的检查,从来没有出现过这个问题)

清理(​​几乎无法运行的)环境并在帮助台工具(otrs)中实现它之后,我没有看到这种行为,所以我怀疑这些消息只是同事们的想法(因为 nagios 每分钟发送几次邮件!)

经过几周的努力,它现在已经是绿色的了,部门对此非常满意......

抱歉我之前没有关闭这个问题,感谢您的时间!

另一个更新:终于搞明白了(我想)。nagios 代理(opsview)崩溃了,所以它发出了主机拒绝连接的消息。我认为这让 IT 部门很困扰。

答案1

一定是某个地方配置错误,或者主机启动速度比服务检查失败速度快。即使在 Khaled 发布的 URL 中,也说主机检查是在服务更改状态时按需进行的:

Nagios 守护进程检查主机:

  • 按照主机定义中的 check_interval 和 retry_interval 选项所定义的定期间隔。
  • 当与主机关联的服务改变状态时按需改变。
  • 作为主机可达性逻辑的一部分,按需要进行按需处理。
  • 根据需要进行预测主机依赖性检查。

这基本上意味着 Nagios 将按设定的时间间隔进行检查,以及检查服务何时改变状态。当服务中断(进入警告/严重状态)时,将执行主机检查,如果主机被视为关闭,则应该抑制服务通知(假设您已按此方式配置)。您可以向我们展示您的服务和主机定义,并屏蔽任何主机名/地址以保护无辜者(如果您愿意)。

附注一下,我使用 Nagios 已有多年,当主机处于宕机状态时从来没有收到过服务警报,除非我特别配置它。

答案2

旧帖子,但可能值得一提的是,主机被永久配置为拒绝 ping 等,但需要监控一些可见服务,这种情况很常见。

在这些情况下,如下所述:Nagios 主机关闭但服务正常运行,可以使用虚拟检查来忽略主机并改用服务。

在这些情况下,为了获得有意义的主机检查,我倾向于(nagios 3.x)将主机检查命令更改为在我知道有监控服务的端口(通常是端口 80)上使用 check_tcp,并更改 check-host-alive 以使用适当的端口调用它:

# Alternative to 'check-host-alive' command for hosts that can't be pinged
define command {
        command_name    check-host-alive-alt
        command_line    $USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$
}

并配置主机

define host {
    use             some-server-template
    name            an-unpingable-webserver

    # <other host config directives>

    check_command   check-host-alive-alt!80
}

并根据服务依赖关系来决定是否检查其他服务,并链接到您的票务系统(通过自定义服务通知命令)。至少你知道如果主机检查失败,那就出问题了。

答案3

我认为不可能。Nagios 会定期安排服务和主机检查。此外,当服务状态发生变化时,它还会检查主机状态。您可以查看这一页

我认为,如果需要,您需要自己实现此机制。例如,您可以接收并存储服务状态更改。然后,只有当主机状态没有更改时(由于另一次检查或经过一段时间超时),您才可以发送通知。

答案4

这应该可以通过依赖关系实现
https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/dependencies.html
以下是该网站的一段摘录:

如何测试服务依赖关系

在 Nagios 执行服务检查或为服务发送通知之前,它会检查服务是否有任何依赖项。如果没有任何依赖项,则会正常执行检查或发送通知。如果服务确实有一个或多个依赖项,Nagios 将按如下方式检查每个依赖项条目:

  • Nagios 获取所依赖服务的当前状态*。
  • Nagios 将所依赖服务的当前状态与依赖关系定义中的执行或通知失败选项(无论 当时
    哪个相关)进行比较。

  • 如果所依赖服务的当前状态与某个失败选项匹配,则表示依赖关系失败
    ,并且 Nagios 将跳出依赖关系检查循环。
  • 如果所依赖服务的当前状态与依赖项的任何失败选项不匹配,则
    表示依赖关系已通过,并且 Nagios 将继续检查下一个依赖项。

相关内容