背景:
几个系统间通过rocketmq的消息传递信息,用户反馈该功能存在一些数据不一致,应该是mq消息丢失或者系统在发消息时候报错,因此在代码中先打上日志并发布。日志由多个[tag]加详细信息组成,例子如:
log.info("[MqAction][Proxy][ProxyMqReceive][ProxyNotificationCnsmRouteMqReceive] Notification receive:{}", json.toString());
步骤:
- 编写loki promQL分类查询日志数量详细可以参考loki官方文档,或者stackoverflow的例子,建议使用loki的builder功能构建查询语句
下面例子是将上述log通过第三个tag进行分类并汇总数量
count by(tag) (rate({env="dev2"} |= `MqAction` | json | line_format `{{.message}}` | pattern `[MqAction][<app>][<tag>]` | line_format `{{.app}}---{{.tag}}` [$__range]))
- 构建好后将该查询添加到dashBoard
然后就可以在Grafana dashboard页面看到自己构建的展示表 - 通过dashboard找到异常数据
该图表展示的是汇总数据,如果需要查看更详细的log及其时间戳,可以把查询语句中的汇总去掉,将两个panel放在同一个dashboard里
{env="dev2"} |= `MqAction` | json | line_format `{{.message}}` | pattern `[MqAction][<app>][<tag>]` | line_format `{{.app}}---{{.tag}}`
还要把option中的type选项改为Range
更改后效果如下: