如何通过SQL查询替换Grafana中Prometheus条形图的UUID图例?
解决Grafana条形图图例UUID替换为SQL表名称的问题
1. 配置混合数据源查询
切换面板查询模式为-- Mixed --,添加两个查询:
- Prometheus查询(Query 1):保留原查询,结果格式选Time series
sum by (obj_id) (increase(my_fancy_metric{}[$__range])) > 0 - SQL查询(Query 2):获取UUID与名称的映射,结果格式选Table
select id as obj_id, name from my_table
2. 用Join转换关联数据
进入面板Transform标签,添加Join by field转换:
- 选择
Outer join作为连接模式,确保所有Prometheus返回的UUID都能匹配到名称 - 设置连接字段为
obj_id,匹配两个查询的关联键 - 确认该转换处于转换列表的最顶端,避免其他转换干扰关联结果
3. 修改图例格式为名称
回到Visualization标签,找到Legend配置项:
- 将Legend format设置为
{{name}},直接用SQL返回的名称替换原UUID图例 - 如果存在名称重复的情况,可以改用
{{name}} ({{obj_id}})作为格式,兼顾可读性和唯一性
关键注意点
- 确保SQL返回的
obj_id与Prometheus的obj_id数据类型、大小写完全一致,否则会匹配失败 - 检查Transform后的字段列表,确认
name字段已被成功关联到时间序列的标签集合中 - Prometheus查询必须保持Time series格式,不能改为Table,否则条形图无法正常渲染
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

