Grafana是否可设置全局常量映射,根据选中变量返回对应UUID值?
Grafana三变量组合映射UUID实现方案
完全可以实现该需求,无需额外安装插件,以下是两种常用的可行方案:
方案1:隐藏自定义变量+内置replace函数(全数据源通用)
该方案不依赖你的数据源类型,纯靠Grafana内置功能实现,适合映射条目较少(≤10条)的场景,操作步骤如下:
- 进入仪表盘设置 → 变量页 → 点击「新增变量」
- 按以下规则配置变量:
- 名称:
uuid - 类型:自定义
- 查询规则:填入嵌套replace映射表达式,示例如下:
新增映射条目只需要在外层再嵌套一层replace即可,最后一个规则用于匹配未配置的组合返回默认值。${replace(replace(replace("${cloud}-${environment}-${location}", "aws-dev-eastus2", "b3207989-162c-4be6-a3d0-3a17444cff7d", "azure-stage-westeurope", "5340aad8-ea3d-416b-8ab2-1cafd7c301ca"), "gcp-prod-westus2", "2f2b3a9c-c179-4b70-b688-36d9f3548bc2"), /^[a-z0-9-]+$/, "unknown")} - 隐藏选项:选择隐藏变量(无需展示给终端用户)
- 刷新规则:选择随其他变量变更刷新
- 名称:
配置完成后,你可以在仪表盘所有面板的查询、文本组件中直接使用${uuid}变量获取对应组合的UUID值,三个筛选变量变更时UUID会自动同步更新。
方案2:数据源侧映射(适合映射条目多的场景)
如果你的映射条目超过10条,用内置函数写太长不好维护,可以把映射关系存在数据源侧实现:
- 若使用SQL类数据源:提前把所有三变量组合和对应UUID存入一张映射表,新增
uuid变量类型为查询,查询语句示例:select uuid from env_uuid_map where cloud='${cloud}' and environment='${environment}' and location='${location}' limit 1 - 若使用Prometheus类数据源:可以通过
metric_relabel_configs提前把UUID作为标签绑定到对应指标上,或者在查询时用label_replace函数做映射匹配。
该方案的优势是后续更新映射关系只需要修改数据源中的内容,不需要调整Grafana仪表盘配置。
注意:建议始终为未匹配到的组合预留默认返回值(比如上述示例中的
unknown),避免变量为空导致面板查询报错。
内容的提问来源于stack exchange,提问作者Ken Tsoi
相关产品推荐
相关产品推荐

