允许主机在 Nagios 监视下停机

允许主机在 Nagios 监视下停机

我们正在使用 nagios 来监控服务器的运行状况。现在我们有一个任务,就是添加只在特定时间内运行的服务器。在此期间,我们必须确保所有服务都正常运行。不幸的是,我们不知道什么时候主机就会宕机。所以我们需要一些自动化的方法来实现这一点。

  1. 有没有办法(配置指令)不是报告主机是否宕机。我的意思是,即使在 nagios 客户端中,雄蕊属。我不喜欢系统托盘里整天都是黑色图标的想法。
  2. 有没有办法不是当主机关闭时,报告主机上运行的任何服务?
  3. 在获得积分的同时1.2.有没有办法监控所有主机服务何时以及仅有的主机何时启动?

答案1

让我按错误的顺序来理解这些要点。

2)NAGIOS 应该已经这样做了;如果主机宕机,则不会发送服务警报。

1)我认为您可以通过灵活的停机时间来做到这一点:这是给定窗口持续时间的停机时间,它不是在已知时间开始的;相反,当主机关闭时,窗口会自动启动。

但后来我突然想到:你真正需要做的就是在主机宕机时不发送警报。如果你能做到这一点,那么

  • 当主机宕机时,不会发送服务警报。您不关心主机宕机,因为正如您所说,您不知道它何时会来去,因此没有主机警报并不重要。仍会记录 HOST DOWN,让您可以回顾发生了什么,但不会发送警报。

  • 当主机启动时,无论如何都会发送服务警报。

这就是你想要的,不是吗?如果是这样,你需要添加到主机定义中

notification_options   n

我认为这也解决了问题 3,因为这是正常情况。我不能代表 nagstamon 等非核心客户端发言。根据我的经验,这些通常是屏幕抓取工具,它们关于通知什么的决定不是基于 NAGIOS 的通知逻辑。如果您的客户端遵守 NAGIOS 的内置规则,那就没问题;否则,您必须使用该特定工具来添加类似的逻辑。

答案2

您可以使用 timeperiods.cfg 中的 timeperiod 定义来定义自定义时间段。以下是示例

# Here is a slightly friendlier period during work hours
define timeperiod{
    timeperiod_name workhours
    alias           Standard Work Hours
    monday          09:00-17:00
    tuesday         09:00-17:00
    wednesday       09:00-17:00
    thursday        09:00-17:00
    friday          09:00-17:00
    }

然后将其用作主机和服务定义中的 check_period 值。

答案3

这是我对此使用被动检查的想法,但我需要先陈述一个假设。您根本不想监控主机的正常运行时间。只要当主机启动时,相应的服务正在运行。

在随机正常运行的主机上,你可以运行类似以下 shell 脚本https://gist.github.com/746998。此示例将监视 SMTP,但它相当简单。您需要以可以使用密钥对 ssh 进入 nagios 主机的用户身份运行此示例,并将其作为练习留给读者(或发布新问题)。我还没有测试过,但它应该可以工作。被动检查文档(http://nagios.sourceforge.net/docs/3_0/passivechecks.html) 应该会有所帮助。

这不会自动配置 Nagios 服务器上的主机,但您可以使用 puppet 之类的工具来实现这一点。

答案4

这个答案不会涵盖第三方监控插件,如 nagstamon 或 Firefox nagios 插件,因为它会有很大差异。

我能想到的几种方法如下:

  • 禁用服务器的主机检查。但是,这会使主机永久处于“UP”状态,并且服务将开始发出警报。
  • 不断设置浮动停机时间。浮动停机时间从下次主机被视为“停机”时开始,并持续您指定的时间。您也许可以使用 cronjob 执行此操作,每两小时发出 2 个浮动小时的“SCHEDULE_HOST_DOWNTIME”。(参见NAGIOS 开发人员 - 外部命令)。
  • 安排主机和所有服务的停机时间(参见上面的链接)。

  • 您还可以做的是使用服务依赖项。如果您通过 PING 检查主机,则添加 PING 服务,并为该主机上的所有其他服务添加 service_dependency 以依赖于 PING,然后关闭 ping 通知。这将看起来像;

define servicedependency {  
    dependent_host_name             flaky_biscuit  
    dependent_service_description   service1, service2, service3, service4, service5
    host_name                       flaky_biscuit  
    service_description             PING  
    execution_failure_criteria      w,u,c  
    notification_failure_criteria   w,u,c  
}

这实质上意味着,当 PING 处于警告、未知或严重状态时,PING 将通知,但所有相关服务均不会通知。(再次关闭 PING 的通知!)此外,当 PING 处于警告、未知或严重状态时,相关服务甚至不会执行

我不能代表 NagStaMon 发言,但 Firefox NAGIOS 插件的首选项本质上是“忽略已确认的服务”,这意味着如果您在停机时确认或安排服务、关闭通知或对服务进行任何其他修改,即使处于该状态,它也不会在状态栏中显示为“警告/严重”。我不知道 NagStaMon 在这方面有什么或没有什么。

相关内容