基于Loki日志构建Grafana仪表盘:动态统计各msg类型日志数量
解决Loki动态msg类型统计问题
要自动统计所有动态变化的msg类型出现次数,无需逐个手动查询,你可以利用Loki的JSON解析+分组聚合能力实现,具体查询语句如下:
sum by (app, msg) ( count_over_time( {namespace="health-helper-stg"} | json | __error__ = "" | msg != "" [$__range] ) )
语句说明:
{namespace="health-helper-stg"}:指定目标命名空间,缩小查询范围| json:解析日志中的JSON结构,自动提取msg、app等字段| __error__ = "":过滤掉JSON解析失败的无效日志,避免干扰统计结果| msg != "":只保留包含有效msg字段的日志条目count_over_time(...) [$__range]:统计Grafana当前选择时间范围内,每个日志流的出现次数sum by (app, msg):按应用(app)和消息类型(msg)分组,汇总每个分组的总次数
Grafana表格配置:
- 选择Loki作为数据源,粘贴上述查询语句
- 切换到「表格」可视化类型
- 在「字段」设置中,将
app和msg设为维度列,Value列对应计数结果 - 可按需添加排序规则(比如按计数降序),或格式化数字显示
注意事项:
- 如果
msg是JSON嵌套字段(如.content.msg),需调整解析逻辑,例如用| json content.msg as msg指定提取路径 - 若日志量过大,可添加额外过滤条件(如
app="xxx")缩小查询范围,提升性能 - 确保日志为标准JSON格式,否则
| json解析会失败,需先调整日志输出格式
内容的提问来源于stack exchange,提问作者Illthizam Nazar
相关产品推荐
相关产品推荐

