如何在Grafana中通过查询结果设置面板标题与显示名称
解决Grafana Gauge面板动态命名问题
一、动态设置面板标题
有两种实用方案:
- 方案1:查询变量+变量引用
- 进入仪表盘设置→Variables→Add variable,类型选Query,关联你的SQL数据源,输入查询语句获取动态名称(比如
SELECT DISTINCT display_name FROM your_metrics_table),给变量起个名字比如metric_name。 - 在面板标题输入框直接写
${metric_name} 统计指标,切换变量值时标题会同步更新。
- 进入仪表盘设置→Variables→Add variable,类型选Query,关联你的SQL数据源,输入查询语句获取动态名称(比如
- 方案2:单面板绑定单条结果
如果你的Gauge对应单条SQL结果(比如SELECT '教学楼A' as name, 92 as occupancy FROM room_stats WHERE id=1),可以用隐藏变量实现:- 创建Query类型变量,查询语句写
SELECT name FROM room_stats WHERE id=1,Hide选项选Variable把变量隐藏。 - 面板标题直接引用这个隐藏变量即可。
- 创建Query类型变量,查询语句写
二、动态设置数值下方的名称(Gauge字段显示名)
核心是让显示名来自SQL查询结果,两种思路:
- 方案1:SQL直接定义动态字段别名
把要显示的名称作为数值列的别名,或者单独查出来:
然后在Gauge的Field Overrides里,选中数值字段,设置“Display name”为-- 从数据库取名称作为字段别名 SELECT metric_value AS (SELECT display_name FROM metrics WHERE id=1) FROM your_table -- 或者返回名称列+数值列 SELECT display_name as metric_label, metric_value FROM your_table WHERE ...${__data.fields['metric_label'].values[0]}(单条结果场景)。 - 方案2:用Transform重命名字段
- 在面板Query标签页下添加Transform→Extract fields,把查询返回的名称列提取出来。
- 进入Field Overrides,选中数值字段,设置“Display name”为
${__data.fields['name'].values[0]}(这里name是你查询里的名称列名)。
三、为什么$__cell_N没用?
$__cell_N是Table面板专属变量,用来引用表格单元格内容,Gauge这类单值可视化面板不支持这个变量,所以得换上面的方法。
额外提示
如果要批量创建多个Gauge面板(每个对应不同指标),可以用模板变量+重复面板:设置一个遍历所有指标名称的变量,给面板开启“Repeat for each value of variable”,每个面板的标题和字段名会自动匹配变量值。
内容的提问来源于stack exchange,提问作者mafu89
相关产品推荐
相关产品推荐

