![允许主机在 Nagios 监视下停机](https://linux22.com/image/533423/%E5%85%81%E8%AE%B8%E4%B8%BB%E6%9C%BA%E5%9C%A8%20Nagios%20%E7%9B%91%E8%A7%86%E4%B8%8B%E5%81%9C%E6%9C%BA.png)
我们正在使用 nagios 来监控服务器的运行状况。现在我们有一个任务,就是添加只在特定时间内运行的服务器。在此期间,我们必须确保所有服务都正常运行。不幸的是,我们不知道什么时候主机就会宕机。所以我们需要一些自动化的方法来实现这一点。
- 有没有办法(配置指令)不是报告主机是否宕机。我的意思是,即使在 nagios 客户端中,雄蕊属。我不喜欢系统托盘里整天都是黑色图标的想法。
- 有没有办法不是当主机关闭时,报告主机上运行的任何服务?
- 在获得积分的同时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 在这方面有什么或没有什么。