我们项目的编码中会出于不同的目的打印不同级别的日志,debug、info、warn、error。其中error日志是非常关键的日志信息,error出现的时候表示业务的流程已经出现了问题,无法正常运转业务了。因此对于error日志的告警触达到开发人员这个环节至关重要。本篇笔记用于介绍异常日志的告警系统该如何设计。
一、异常日志告警过滤器配置
一个过滤器有多个监控项
常规的error日志我们一般都会包含message和异常对象两部分。log.error(“出事了!!!”, exception)。
因此告警过滤器应该配置监控的是message信息还是异常堆栈信息
监控内容:message还是异常堆栈。
监控项的匹配规则
交集:命中所有规则
并集:命中任何一个规则
报警条件
时间&条数:比如1分钟100条,1秒10条等等
比例:
设置时间窗口:比如1分钟 5分钟
环比:对比上个时间窗口增加了百分之多少
日同比:对比昨天的该窗口增加了百分之多少
配置告警级别
告警级别对应不同的触发方式
不同的阈值配置不同的告警级别
顺序
设置过滤器的顺序决定被匹配的优先级
是否停止匹配
含义为匹配命中之后是否继续匹配之后的过滤器
默认选择”是“,否则一个日志可能会命中多个规则报警多次
默认过滤器
任何一个项目都会有一个默认过滤器
并且该过滤器的优先级最低
没有命中任何一条过滤器的都会被该过滤器命中
二、告警触达
告警方式
公司内部系统类似于企业微信
短信
电话
告警级别
不同的过滤器配置不同的告警级别
比如
三级:企业微信
二级:企业微信+短信
一级:企业微信+短信+电话
三、过滤器demo
名称:积分库存过滤器
顺序:1(表示优先级最高)
规则:交集
监控内容:message
报警条件:1分钟100条
报警级别:二级
是否停止匹配:是
四、因此最终的触发效果如下
比如业务场景为用户参与活动就下发奖励:积分、道具之类
1.积分库存不足
2.业务日志判断并打印了该情况。log.error(“积分库存不足”)。
3.匹配上了”积分库存不足”的业务告警逻辑
4.达到了告警的阈值比如:100个/分钟
5.触发改告警配置的通知,比如:发短信
6.开发同学收到告警开始解决
本文分享自微信公众号 - 猪哥Java(pig-python)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。