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

如何在Grafana Loki中按错误类型分组展示时序计数图表

实现按错误类型分组的时序日志计数图表

可行方案:PostgreSQL GROUP BY 时间聚合查询

直接通过PostgreSQL的分组聚合查询生成时序面板可识别的结构化数据,自动按错误类型拆分系列、渲染不同颜色线条,完美适配需求且维护成本低。

前两种方法的问题分析

  • Transformers 流程:提取exception_type后经Format Time、Group By转换器处理的输出,不符合时序面板要求的时间戳-系列名-数值三元组结构,导致面板无法正确解析数据。
  • 堆叠count_over_time 查询:需提前枚举所有错误类型,新增错误时必须手动修改查询语句,维护成本极高,无法适配动态新增的错误类型场景。

PostgreSQL 具体实现示例

假设日志表为application_logs,包含timestamp(日志生成时间)、exception_type(错误类型标识)字段,以下查询按小时聚合近7天内各错误类型的日志计数:

SELECT
  date_trunc('hour', timestamp) AS time,
  exception_type,
  COUNT(*) AS count
FROM application_logs
WHERE timestamp >= NOW() - INTERVAL '7 days'
GROUP BY time, exception_type
ORDER BY time ASC;

该查询输出的每一行数据包含三个核心字段:

  • time:标准化的时间戳(可按需调整粒度,如将date_trunc('hour', timestamp)改为date_trunc('minute', timestamp)实现分钟级聚合)
  • exception_type:错误类型,作为时序图表的系列标识(面板会自动为每个类型分配独立颜色)
  • count:对应时间区间内的日志计数,作为Y轴数值

若存在exception_type为NULL的日志,可通过COALESCE函数统一归类,避免数据丢失:

SELECT
  date_trunc('hour', timestamp) AS time,
  COALESCE(exception_type, '未分类错误') AS exception_type,
  COUNT(*) AS count
FROM application_logs
WHERE timestamp >= NOW() - INTERVAL '7 days'
GROUP BY time, exception_type
ORDER BY time ASC;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 20:33:31