使用loki加grafana监控java异常日志

简介

一直有一个痛点,就是生产上的 异常日志必须要人去手动去看,然后才可以发现异常的状态,所以一直希望就是说,一旦生产上的应用报异常日志了,异常日志就可以直接发送到手机上,然后开发就可以知道是什么问题,但是目前我们使用的日志工具是loki,貌似做不到这一点,但是可以做到怎样的程度呢,就是当生产出现exception的关键字的时候,我就可以直接通过grafana的告警,发送到企业微信或者钉钉,哪一个应用在哪一台机器上有异常日志

关于loki

在lokiv0.4.0之后是支持从日志查询指标的,比如你可以使用关键字去监控,详细的可以看下面

https://grafana.com/blog/2019/10/28/whats-new-in-loki-v0.4.0/

所以你就可以使用和PromQL一样的语言去查询,对于loki他叫LogQL,具体的你可以看下面

https://github.com/grafana/loki/blob/master/docs/logql.md

操作

首先打开grafana添加loki的数据源,注意类型是prometheus

之后url写入 http://loki_ip:3100/loki

点击save&test添加成功

之后添加一个dashboard,类型就选择graph,然后查询的语句如下

count_over_time(({app="app"} |= "Exception")[1m])

具体的语法看

https://github.com/grafana/loki/blob/master/docs/logql.md

这里说的和详细

这样的话一般图表里面就会显示出1分钟内Exception出现过几次了,如果Exception少的话可以换做别的关键字来测试

接着配置grafana的alert

我就直接上图了

意思就是每一分钟去查询一次,一旦碰到这个值是大于0的,那么就直接告警

Notification channels这里我选择的是webhook,然后自己写了一个脚本去接受post过来的信息,然后格式化信息变成想要的,接着发送到企业微信机器人里面,效果如下

欢迎关注Bboysoul的博客www.bboy.app

Have Fun

欢迎关注我的其它发布渠道