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

如何基于PostgreSQL数据源在Grafana中绘制按status区分的多折线图

Grafana按接口状态码拆分多折线图调整方案

1 优先检查查询配置项

你当前的SQL逻辑完全符合Grafana时序查询的结构要求,无需修改。唯一要检查的是查询面板下方的Format as选项,必须选择Time series,不要选默认的Table,这是90%以上该类问题的根因。

2 若修改格式后仍不生效,调整面板转换规则

如果已经选了Time series格式还是没有拆分多条线,可通过转换规则强制拆分:

  • 打开面板右侧的「Transform」标签页
  • 添加「Partition by values」转换规则
  • 「Partition by field」选择metric(也就是你取别名为metric的status字段)
  • 保存配置后即可自动按不同状态值拆分出独立折线,每条折线的图例默认是状态码值

3 可选优化:避免折线断层

如果某时间窗口内某个状态码没有对应请求,当前查询不会返回该状态的记录,会导致折线出现断点,可通过关联状态字典补全数据(需要提前维护一个包含所有需要展示的状态码的表api_status_codes,仅存status字段):

SELECT
  t.time AS "time",
  s.status AS "metric",
  COALESCE(l.count, 0) AS "count"
FROM (
  SELECT $__timeGroup(created_at, '5m') AS time
  FROM api_logs
  WHERE $__timeFilter(created_at)
  GROUP BY 1
) t
CROSS JOIN api_status_codes s
LEFT JOIN (
  SELECT
    $__timeGroup(created_at, '5m') AS time,
    status,
    count(*) AS count
  FROM api_logs
  WHERE $__timeFilter(created_at)
  GROUP BY 1,2
) l ON t.time = l.time AND s.status = l.status
ORDER BY 1,2

该优化后即使某个状态码在对应窗口无请求,也会返回0值,折线不会出现断层。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:09:00