Grafana变量如何传值关联Dashboard API 实现下拉显名传ID
Grafana变量「下拉展示可读名称、实际传参透传ID」实现方案
核心利用Grafana变量原生支持的展示值/实际传参值分离能力实现,不需要改面板业务API的参数接收逻辑,具体操作分两种场景:
- 场景1:可修改变量对接的后端接口返回结构(优先选,维护成本最低)
直接调整变量对接的ID列表接口,把原来纯ID数组的返回格式,改成带__text、__value字段的键值对数组:__text字段存用户需要看到的MRD可读名称__value字段存原来的MRD ID,也就是业务接口需要接收的mrdid参数值
接口返回示例:
变量配置时正常解析该返回结果即可,面板请求业务API时,直接按原有方式引用变量,比如请求路径写[ {"__text": "2024Q3支付链路重构MRD", "__value": "23982372489198"}, {"__text": "2024Q4新用户引导迭代MRD", "__value": "23982372489245"} ]/mrd-stats/?mrdid=${你配置的mrd变量名},Grafana会自动透传选中项的__value(即真实ID)给接口,下拉选项里展示的是__text对应的MRD名称,完全匹配需求。
如果你的变量是对接数据库类数据源,直接在查询语句里给字段起对应别名即可,比如SQL查询写法:select mrd_name as __text, mrd_id as __value from mrd_basic_info; - 场景2:暂时无法修改变量对接的ID接口返回结构
可以在Grafana变量配置层做数据拼接:- 先保留原有拉取ID列表的查询
- 新增一个查询拉取全量MRD的「ID-名称」映射关系
- 用Grafana自带的转换(Transform)功能做字段关联,把两个查询结果按MRD ID做Join,手动把名称字段映射为
__text、ID字段映射为__value,再作为变量的最终可选值列表
这种方式不需要改后端接口,但配置步骤稍多,适合后端接口暂时没法调整的临时场景。
注意:不建议用变量的「自定义静态选项」手动维护ID和名称的映射关系,除非MRD列表总量极少且长期不更新,否则后续新增、下线MRD都需要手动改Grafana配置,维护成本极高。
内容的提问来源于stack exchange,提问作者Abraham Lugonzo
相关产品推荐
相关产品推荐

