以使用 nagios 和 check_mk 监控的主机为例。现在它上面运行着 http 和 ssh 服务器。最佳监控策略是什么:
- 监控 sshd 和 apache 进程是否正在运行
- 尝试从监控主机连接到正确的端口,例如 22 和 80
- 尝试从外部网络连接 80 端口
我不想收到大量警报:
- 当主机关闭时(例如 check_mk 无法连接)
- 当我的网络出现问题时(该服务实际上可以通过其他网络获得)
所以我想知道监控策略和背后的理论。因为我不想只是进行多次重复检查,而这只会生成大量无用的警报。监控应努力实现什么目标以及如何实现?
我已经使用 check_mk 部署了 nagios,并执行了 500 多项检查。这是一个关于如何规划检查并实现良好覆盖范围的一般问题(如果您愿意,可以不考虑监控解决方案)。
答案1
从 Shane 链接的上述问题中选择您想要的任何监控解决方案。然后在添加所有主机和服务时,确保包含主机/服务依赖项。例如,如果主机 A、B 和 C 连接到交换机 D,请确保将 A、B 和 C 设置为依赖于 D。这样,如果交换机 D 发生故障,您将不会收到有关所有依赖对象的通知。
不过,这样做有利有弊。在上面的例子中,您只会收到一条警报(而不是大量警报),因此您需要非常有意识地阅读和响应每一条警报,而不是依靠警报数量来判断问题的严重性。
答案2
要检查 httpd 是否运行正常,您需要采用不同的方法:访问应用程序的重要 URL,并检查该 URL 的典型内容是否包含在您的 web 服务器的答案中(您可以使用自己的 nagios 脚本并使用 curl 来实现)。
SSHD 非常可靠 - 所以可能不需要检查它。HTTPD 会运行 - 但有时它不会再执行任何操作(这将通过简单的端口 80 检查来解决) - 但更常见的情况是 HTTPD 运行但不再提供内容。
除此之外,您还应该对(网络)依赖关系进行建模。如果您的代理关闭,则每个 httpd 检查都会失败...
答案3
您可以将旧式 nagios 检查 + apache 进程监控混合用于任何带有“webserver”标签的内容。如果添加服务依赖项,您将获得“端到端”监控的组合,并且还可以实现仅接收一个通知(当然,不包括联系人的“u”通知)
或者,您专注于“用户体验”监控,因此只有在模拟最终用户(check_http)无法访问站点时才会通知,并使用 Check_MK BI 深入研究该问题。