如何在Grafana中手动定义包含变量集合的切换变量?
在Grafana中实现带子变量的切换变量
可以实现,以下是两种手动定义的可行方案:
方案一:JSON格式主变量+字段引用(推荐)
这种方式可以直接通过类似${region:json}.ip的形式引用子变量,完全匹配你的需求:
创建主变量
region- 进入仪表盘设置 → 变量 → 新建变量
- 类型选择「Custom」
- 在「选项」区域添加以下三组标签和值:
- 标签:
Europe,值:{"ip":"europe_ip","port":"europe_port","service_name":"europe_service_name"} - 标签:
America,值:{"ip":"america_ip","port":"america_host","service_name":"america_service_name"} - 标签:
Asia,值:{"ip":"asia_ip","port":"asia_host","service_name":"asia_service_name"}
- 标签:
- 保存变量
引用子变量
在面板的查询或文本中,通过Grafana的JSON格式化器解析子字段:- 引用IP:
${region:json}.ip - 引用端口:
${region:json}.port - 引用服务名:
${region:json}.service_name
- 引用IP:
方案二:主变量+依赖子变量
如果觉得JSON格式维护麻烦,可以为每个子属性单独创建依赖变量:
创建主变量
region- 类型选「Custom」,选项直接添加
Europe、America、Asia三个值,标签和值保持一致
- 类型选「Custom」,选项直接添加
创建子变量
region_ip- 新建变量,类型选「Custom」
- 在「值」的输入框中,使用Grafana的条件表达式:
${region} == 'Europe' ? 'europe_ip' : ${region} == 'America' ? 'america_ip' : 'asia_ip' - 勾选「隐藏」(如果不需要单独显示这个变量)
同理创建其他子变量
region_port的条件表达式:${region} == 'Europe' ? 'europe_port' : ${region} == 'America' ? 'america_host' : 'asia_host'region_service_name的条件表达式:${region} == 'Europe' ? 'europe_service_name' : ${region} == 'America' ? 'america_service_name' : 'asia_service_name'
引用子变量
直接使用$region_ip、$region_service_name这类变量名即可。
内容的提问来源于stack exchange,提问作者Will1v
相关产品推荐
相关产品推荐

