本篇目录7 节

06仪表盘与可视化Dashboards

查询与数据变换

一个面板里如何用 A/B 多查询、表达式与混合数据源取数,再用 join、merge、organize、reduce、calculate field 等 transformation 整形数据,附调试视图用法。

约 2 分钟/658 字/GRAFANA 12.X

一个面板里的多查询

面板编辑器里每条查询都有字母编号(ABC……),称为 RefID。多条查询的结果默认会一起进入可视化:

  • 加查询:点查询编辑器下方的 + Query
  • 隐藏某条曲线:在图例里点击其名称,或对该查询设置不显示;具体入口随版本略有差异。
  • 每条查询独立选数据源:A 查 Prometheus、B 查 MySQL 完全合法,这是「混合数据源」的基础。

表达式:查询之间做计算

数据源内部算不动的跨源运算,交给 Grafana 的 Expression+ Query → Expression):

类型 作用
Math $A$B 引用其他查询结果做四则与聚合运算
Reduce 把一条曲线压缩成一个值
Threshold 按阈值判断输出 0 / 1,常用于状态色
Time series 从标量还原出曲线

「错误率 = 5xx ÷ 全部请求」的标准做法:

# 查询 A(Prometheus):分子
sum(rate(http_requests_total{status=~"5.."}[5m]))
# 查询 B(Prometheus):分母
sum(rate(http_requests_total[5m]))
# 表达式 C(Math):错误率百分比
100 * $A / $B

混合数据源速查

场景 做法
同源两条曲线对比 A、B 两条查询用不同标签过滤
指标 ÷ 成本这类跨源计算 A + B + Math 表达式
两条曲线粒度不同想相减 先各自 Format time series,再对齐时间列做 join

注意: 跨源时两边都受仪表盘时间范围约束;某数据源保留期短就会出现断点,这不是查询写错。

常用 transformations

Transform 标签页里的数据变换,按列表从上到下执行:

Transformation 干什么 典型用途
Merge 直接拼接所有数据帧 把多查询结果塞进一张表
Join data 按指定字段对齐列 时间戳相同的多源数据并表
Organize fields 重命名、排序、隐藏列 整理表格观感
Reduce 每条序列聚合为单值 曲线变统计值面板
Add field from calculation 用已有列算新列 面板内做比率、差值
Group by 分组聚合 SQL 式汇总表
Filter fields by name 按名字留列 砍掉多余列
Format time series / table 曲线与表互转 join 前的整形

调试视图

数据不对时,先把可视化切成 Table(或 Inspect → Data)看数据帧原始形状:字段名对不对、值是不是预期、行数是否合理。再逐条关掉 transformation 定位。最后手段是 Inspect → Query 查看发给数据源的真实请求与响应耗时,用来区分「查询慢」还是「变换错」。

常见坑

  • Join 出一堆空值:时间列精度或时区没对齐,先统一格式再 join。
  • Math 表达式结果为空$A 引用的查询必须有返回数据,逐条到 inspector 里核对。
  • 变换顺序一换结果全变Reduce 放在 Organize 前后效果完全不同。

下一步

本页为学习整理的中文改写,依据Grafana 官方文档最新版本编写(以 Grafana 12.x 为基准),操作路径请以实际产品界面为准。

Dashboards