Grafana仪表板变量查询:调用全量值及按组织定义值方法
解决Grafana变量全量查询与组织级值集合的问题
一、直接使用变量的全量值查询
方法1:启用变量的「All」选项
编辑你的自定义变量,在配置页完成以下设置:
- 勾选「Include all option」(包含全量选项)
- 在「Custom all value」里填写适配你数据源语法的全量格式:
- SQL类数据源(MySQL/PostgreSQL):
'device1','device2','device3' - Prometheus:
device1|device2|device3(配合=~使用,比如{device=~"${var_device}"}) - InfluxDB:
/device1|device2|device3/
之后在概览仪表板选中变量的「All」选项,$(variablename)就会自动替换为全量设备集合。
- SQL类数据源(MySQL/PostgreSQL):
方法2:使用变量扩展语法${variablename:all}
如果变量开启了「Multi-value」(多选),直接在查询里用${variablename:all}即可输出所有变量值,格式自动适配多选分隔符(默认逗号):
- SQL查询示例:
SELECT * FROM metrics WHERE device IN (${var_device:all}) - Prometheus查询示例:
{device=~"${var_device:all}"}
二、按组织统一管理值集合的方法
1. 创建组织级变量
进入Grafana的「Configuration > Variables」(组织设置入口)创建变量,将值列表设为["device1", "device2", "device3"]。该变量会被当前组织下所有仪表板共享,后续修改只需在组织设置里更新一次,无需逐个仪表板调整。
2. 基于数据源的查询型变量
如果设备列表存储在数据源中(比如数据库表、时序库标签),用查询型变量替代手动输入的数组:
- Prometheus示例:变量查询语句填
label_values(device),自动拉取所有device标签值 - InfluxDB示例:查询语句填
SHOW TAG VALUES WITH KEY = "device"
变量值会自动同步数据源中的设备列表,组织内所有仪表板可直接引用,实现统一维护。
内容的提问来源于stack exchange,提问作者MarkusCZ
相关产品推荐
相关产品推荐

