大厂实践篇:异常日志告警系统

我们项目的编码中会出于不同的目的打印不同级别的日志,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”


本文分享自微信公众号 - 猪哥Java(pig-python)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章