You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Grafana中基于所有日志代码生成占比饼图

日志代码占比饼图实现方案

问题定位

你当前的查询语句问题出在rate的使用场景上——rate是计算时间序列的每秒增长率,而你需要的是代码出现的总次数占比,用rate会把次数按时间间隔平均,导致统计值偏离实际计数。

正确查询语句(Loki LogQL)

根据你的需求,以下两种方式可以实现动态统计所有代码的出现占比,无需硬编码:

方式1:短时间范围统计(直接计数)

sum by(code) (count_over_time({filename=~"$Filename"} | json code="Properties.Code" | __error__="" [$__range]))
  • count_over_time:统计面板所选时间区间($__range)内每条日志流的出现次数
  • sum by(code):按code维度聚合所有日志流的计数
  • 在Grafana饼图面板中选择**“Percent”**展示模式,即可自动计算各代码的占比

方式2:长时间范围统计(性能优化)

如果时间范围过长,直接用count_over_time可能性能不佳,可通过速率转总次数的方式实现:

sum by(code) (rate({filename=~"$Filename"} | json code="Properties.Code" | __error__="" [$__interval])) * $__interval_seconds
  • rate(...):计算每秒的日志出现速率
  • * $__interval_seconds:将每秒速率转换为当前时间间隔内的总次数
  • 同样在饼图面板中选择占比展示模式即可

额外优化点

  • 过滤无效日志:确保__error__=""确实过滤了解析失败的日志,避免统计到错误的code值
  • 排除空值分类:如果存在code为空的情况,添加| code != ""过滤,避免饼图出现无意义的空值项:
    sum by(code) (count_over_time({filename=~"$Filename"} | json code="Properties.Code" | __error__="" | code != "" [$__range]))
    
  • 动态适配新增代码:以上语句会自动识别所有出现过的code,新增代码无需修改查询语句,会自动出现在饼图中

内容的提问来源于stack exchange,提问作者Etienne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 16:03:19