简而言之:我有一个由大约 400 台主机组成的异构环境,使用 Groundwork/Nagios 进行监控。当前的检查、主机组和服务组已以有机、临时的方式组合在一起。我的任务是重建监控设置。
我之前的工作涉及不到 20 台机器,没有严格的下班后正常运行时间要求,使用 Munin 进行监控 - 这超出了我的经验。我基本上是在寻找一个过程通过它可以解决这个任务。
我有一个模糊的想法,即为最终用户服务设计高级端到端检查 - 比如抓取工具试图登录我们的某个网站 - 然后设置一系列更具体的标准检查作为依赖检查 - 比如检查 httpd 是否正在运行、主机是否可通过网络访问,等等 - 并且只有当高级检查失败时才运行较低级别的检查,以此提供对根本原因的可见性,同时最大限度地减少系统压力。我还在考虑根据环境划分主机,以便团队在下班后只从生产箱中获取页面,诸如此类。
这是明智的吗?设计监控系统是否有最佳实践方法?我有信心从我们目前不太理想的设置迁移到更好的设计,但我希望首先得到一些关于如何设计理想设置的更成熟的指导。
答案1
为了扩展我的评论,并希望给你一点指导,你可能想从中得到什么Kyle 的博客文章(还有这个(均在我的监控系统设计人员必读参考书目中)的共同点是,故障通常不是指一件事出错,而是指 10 件事出错。一个
好的监控系统的工作就是在这 10 件事真正破坏您的服务并影响面向客户的内容之前发现它们。
下面的介绍绝不是详尽或完整的,但与我处理监控设置的方法非常相似并且应该可以引导您朝着正确的方向前进:
要弄清楚您想要监控什么,首先需要考虑什么可能导致故障。
- 有些事情很常见,
很多都可以从 Kyle 的帖子中抄袭,所以我就不一一列举了,但如果你想收到通知预故障条件-例如一RAID5 中的驱动器发生故障 —— 立即更换它并避免以后停机。 - 其他则根据您的基础设施/设计而有所不同,并包括对其他服务的依赖
如果你正在运行一个由数据库支持的网站,而数据库瘫痪了,你的网站将无法运行
- 有些事情很常见,
查看依赖关系并构建依赖关系树。
(在数据中心中,您可以根据需要进行管理:在我上一份工作中,我们是一家托管公司,我们的监控系统与我们的 UPS、发电机和冷却系统进行通信,以让我们了解它们的最新状态)- 掌握了所有这些信息,您就可以决定什么可以主动监控,什么只能被动响应
(例如,“网线被拔出”会导致任何服务器瘫痪,但是否值得监控交换机端口的状态,或者您是否希望出现“它瘫痪了,我必须去看看”的情况?)。
剩下的任务就是选择监控软件来实现您的愿景。此选择应基于哪个软件包可以让您监控所有(或大部分)理想列表,并且实际会考虑软件包之间的价格差异。