做监控平台时,讨论经常从指标协议、存储、图表和报警语法开始。这些都要解决,不过部署好了工具,数据也采上来了,后面还有谁看、谁处理的问题。

有指标不等于有人看

很多项目接入监控以后,确实能够看到接口耗时、错误量、线程池和垃圾回收等指标。但只有出现问题时,大家才临时打开页面寻找线索。

这样的监控更接近排查工具。它能帮助解释故障,却不能提前发现故障。

要让指标进入日常运行,还需要明确什么变化属于异常,报警发送给谁,收到以后怎样判断是否需要处理。否则,图表再完整,也只是被动保存系统状态。

报警规则需要降低使用门槛

如果每个项目都从头理解指标、编写规则和配置接收人,接入成本会长期存在。

我们后来为常见问题提供默认报警,例如异常增长、线程池耗尽和频繁 Full GC,并把报警接收人与项目责任关系连接起来。业务团队仍然可以配置更具体的规则,但基础风险不必每次重新建设。

这种默认能力并不复杂,却比增加更多图表更直接地改变了问题发现方式。

平台的作用不只是提供灵活性,也应该把已经验证过的经验变成默认设置。

多套系统会制造新的信息成本

大型组织通常不只有一套监控。前端、客户端、服务端、日志和链路追踪可能来自不同平台。

每套工具分别看都合理,真正排查问题时却需要在多个入口之间切换。项目名称、时间范围和责任关系如果不统一,使用者需要先完成一轮信息对齐。

因此,我们曾经尝试收拢入口,让不同监控能力能够围绕同一个项目被找到。统一入口没有消除底层系统差异,只是减少“应该去哪里看”的成本。

监控覆盖的是业务失败还是技术异常

CPU、内存和接口错误容易监控,业务失败则更容易遗漏。

请求返回成功,用户目标未必完成,消息正常消费,最终状态也未必一致。关键业务还要有自己的过程和结果指标,技术指标则用来解释这些结果为什么变化。

只监控机器,系统可能在业务已经失败时仍然全部显示绿色。

报警之后仍然需要流程

报警只是把异常送到人面前。是否及时处理,还取决于责任是否清楚、信息是否足够,以及团队是否知道怎样升级问题。

报警过多会让人逐渐忽略,报警缺少上下文则会增加排查时间。没有定期清理和复盘的规则,最终都会失去作用。

所以,监控体系同时涉及技术和组织:平台负责可靠地采集与计算,业务团队定义真正重要的信号,责任人处理异常,复盘再把新的经验补回规则。

工具只是其中一层

数据链路稳定以后,我还会看报警能不能更早发现问题、接收人是否明确、排查有没有变快,以及发生过的问题有没有补进规则。只把工具装好,还不能说明这些事已经有人做了。