项目中使用vicrab通知系统

一、接入vicrab

    在接入vicrab之前,如果在项目出现异常,都需要我们人工查询日志文件。之前项目规模不大,我们倒也没有觉得哪里不好,但是由于最近项目发展,用户量急剧增长,出的问题也是五花八门。所以公司决定接入一个异常管理追踪的平台,经过比较,我们决定选用vicrab作为项目异常管理平台。接入方式也十分简单,vicrab 官网 有挺详细的文档。

  • Maven添加vicrab依赖

    com.vicrab
    vicrab-logback
    1.2.1


    com.vicrab
    vicrab-spring-boot-starter
    1.2.1

  • 项目使用了logback, 所以在logback中添加一个appender

    
        ERROR
    

  • 配置DSN,每创建一个项目,都能在vicrab获得一个密钥,使用Vicrab类初始化。
import com.vicrab.Vicrab;
Vicrab.init("dsn");

    经过以上几步简单的配置,就已经成功接入vicrab了。项目中出现的异常就会发送到vicrab经过分析处理后进行展示。在这里可以看到项目出现的所有问题列表,每种问题出现的次数等等信息。这可比之前人工上服务器翻日志方便多了。

  • 项目首页,可以看到组织下每个项目实时产生的问题数量


  • 项目问题列表,展示了项目下所有问题,可以筛选排序


  • 问题详情,可以查看异常堆栈信息


二、遇到问题

    刚开始接入vicrab,所有设置用的都是官方默认设置,虽然这样已经可以查看项目的所有异常,但是由于公司项目体量大,并不能在vicrab迅速定位到具体的问题。
    当时场景是有一个特定的用户,当他点击搜索的时候,会不定时的出现系统异常。由于并不知道什么时候会出现问题,所以这就给我们造成了很大的困扰。之后查看官网介绍,我们决定使用vicrab自带的通知 alert 系统来解决这个问题。

三、vicrab alert

    通过vicrab有一个报警通知系统。在项目设置中选择警报,可以给每个项目定制一个报警规则。项目创建的时候系统会默认初始化一个报警规则:"新问题通知",即当项目出现新问题的时候,系统会给你发送一封报警邮件。除了系统默认的报警条件之外,vicrab还提供了其他几种报警条件,包含对事件的属性,标签,级别以及事件产生的频率进行监控。

vicrab 提供的报警条件
  • "问题在 {event_interval} 时间内产生的事件数量大于 {event_count}", 可以筛选出产生频率过高的异常
  • "产生新的问题", 可以筛选出所有新产生的异常
  • "问题的标签满足 {tag} {match} {value}",可以对问题的标签进行筛选通知
  • "问题的属性满足 {attribute} {match} {value}", 可以对问题的属性进行筛选通知
  • "问题的级别 level {match} {level}",可以针对问题的级别进行筛选通知

四、解决问题

    我们决定使用标签通知来进行优化。首先为项目新建一个通知规则。点击新增报警规则,添加"问题的标签满足 {tag} {match} {value}"条件,设置tag为user_id,value为具体的user_id,然后保存规则。为了保证尽量实时收到通知,把规则间隔设置为5分钟。

新增的报警规则

    通过查看vicrab官方文档,在项目中添加标签支持。把user_id作为标签的传递给vicrab。

  • 编写切面方法,前置通知中添加user_id的标签tag
Vicrab.getContext().addTag("user_id", user.getUserId());
  • 后置通知,需要清空vicrab context
Vicrab.getContext().clear();

    通过上面的操作,可以把user_id作为标签传给vicrab,之后在vicrab控制台可以通过筛选user_id查询到2272这个用户发生的异常。只要这个用户出现了异常,vicrab就会给我发送报警邮件,实现对系统的实时监控。

vicrab 邮件通知
也可以通过 vicrab 控制台,通过筛选标签得到指定用户发生的异常

五、后记

    通过使用vicrab集中化错误跟踪平台可以很好的实时查看项目产生的异常。而vicrab提供的报警功能则可以使我们具备更迅速的异常监控能力。但是目前vicrab报警通知支持的类型太少了,功能也比较单一,不过若真有满足自己项目需求的情况,使用一下也无妨。

你可能感兴趣的:(项目中使用vicrab通知系统)