导读:
交付的项目运行丝滑且无阻客户体验良好,没有 bug 大概是所有键盘打工人的梦想。那么我们能否在客户感知到 bug 之前就修复掉它,当 bug 产生时如快速的感知并定位到问题,及时进行修复?针对报警的快速感知以及问题定位的命题,我们实施了基于 Prometheus 的精准报警系统,系统包括三部分:日志平台、指标系统、报警系统,该解决方案支持指定处理人快速消息提醒,且报警消息带有充分的指标信息可以快速定位问题范围。
文|兀华 网易云商高级 Java 开发工程师
一、现状 & 问题定位
大家一定有过报警风暴的困扰,没有类型区分大量的报警信息疯狂涌入,导致处理人员一时之间不能快速确定问题位置,可能会绕几圈之后才发现原来是某个问题造成的。目前大部分运行的项目中都有监控系统,异常发生时,监控系统会发出统一的报警消息。如果消息带有 traceId,可以 traceId 到日志平台或者在 ELK 上查看具体日志,上下文信息等。通常报警信息会发送给项目组所有人或者项目大群,项目 leader 看到后会 @相关人员进行排查定位分析,定位分析过程所用时间随问题复杂度成正比,如果遇上报警风暴问题这类定位复杂度高,则耗时更久,这个过程可能已经错失了有利的补救时间,随着时间推移,感知到问题的客户越来越多,影响范围逐渐扩大。我们的初衷是快速修复问题,这个快速是希望能够尽可能缩短异常感知时间和定位分析时间,在客户感知到之前完成修复,尽量不影响客户体验。
二、分析 & 方案
定位问题,一般情况下需要以下指标信息,缺一不可:

通常日志信息会冗余一些其他额外的信息帮助定位排查问题,日志包含以上数据但不限于此。无论接口是否正常响应,都记载日志信息,服务系统每日生成的日志数据量级可达 T 级别,对如此庞大的数据直接进行处理是不现实的。指标系统存在的意义就是提取一些我们感兴趣的关键信息,例如服务内存、CPU、GC 状态等。接口响应码不是 200 的,或者自定义的系统异常状态码,或者其他业务指标等。指标系统是轻量数据的存储、计算与展示,展示我们需要的聚合后的信息,依赖于指标系统我们可以灵活的配置热点数据展示、趋势图、报警等。

目前社区较火热指标系统对比:

![]()
由于报警聚集在 error 或 exception 信息,或方法上缺少上下文关联,导致信息不足以支撑相关处理人尽快做出判断,其次没有归类整理过的报警信息一股脑的发送出来只会扰乱当前处理人的信息整理,尤其当遇上报警风暴的时候

本文介绍了如何通过构建基于Prometheus的精准报警系统,改善客户体验并提升线上问题处理速度。系统包括日志平台、指标系统和报警系统,通过集成Prometheus实现快速报警感知和问题定位。报警信息通过日志平台进行整理、分类,并发送给相应责任人,从而减少响应时间和定位难度。实践证明,该系统能够有效避免报警风暴,提高研发团队的响应效率。
最低0.47元/天 解锁文章
436

被折叠的 条评论
为什么被折叠?



