简介
一直有一个痛点,就是生产上的 异常日志必须要人去手动去看,然后才可以发现异常的状态,所以一直希望就是说,一旦生产上的应用报异常日志了,异常日志就可以直接发送到手机上,然后开发就可以知道是什么问题,但是目前我们使用的日志工具是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过来的信息,然后格式化信息变成想要的,接着发送到企业微信机器人里面,效果如下
欢迎关注我的博客www.bboy.app
Have Fun