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

如何用Loki查询在Grafana面板中统计每条错误的唯一系统数

解决Loki+Grafana错误日志统计中唯一主机数展示问题

问题原因

你之前的查询返回的是message+hostname组合的错误次数,使用Grafana「Group by」转换时如果未正确配置聚合逻辑,会导致无法提取唯一主机数。核心问题是转换操作需要针对hostname标签做去重统计,而非数值字段。

方案一:直接通过Loki查询生成所需指标

可以用Loki的聚合逻辑同时输出错误总次数和唯一主机数,无需依赖Grafana转换:

错误总次数查询(原逻辑保留)

topk(10, sum by(message)(count_over_time({job="systemd-journal"} |~ `ERROR:` | regexp `(?P<message>ERROR:.*)` [7d])))

唯一主机数查询

topk(10, count by(message) (sum by(message, hostname)(count_over_time({job="systemd-journal"} |~ `ERROR:` | regexp `(?P<message>ERROR:.*)` [7d]))))

逻辑说明:先按message+hostname分组统计单主机错误次数,再对每个message统计有多少个不同的hostname分组,即得到唯一主机数量。

将这两个查询添加到同一面板(比如表格面板),即可同时展示两项数据。

方案二:通过Grafana转换处理现有查询结果

如果想保留你修改后的sum by(message, hostname)查询,按以下步骤配置转换:

  1. 保持查询不变:
sum by(message, hostname)(count_over_time({job="systemd-journal"} |~ `ERROR:` | regexp `(?P<message>ERROR:.*)` [7d]))
  1. 进入面板的「转换」选项卡,添加第一个转换:Group by
    • 分组字段选择message(标签)
    • 数值字段(Value)的聚合方式选择Sum,得到每个错误的总次数
  2. 添加第二个转换:Add field from calculation
    • 计算类型选择Count distinct values
    • 目标字段选择hostname(标签)
    • 新字段名设为unique_hosts
  3. 调整字段顺序或隐藏冗余字段,即可得到包含错误消息、总次数、唯一主机数的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:54:56