Grafana如何设置完全依赖另一自定义变量的隐藏辅助变量?
实现方案
你可以通过Grafana内置的模板变量嵌套+隐藏变量的功能实现需求,完全不需要用户感知$auxvar的存在,步骤如下:
步骤1:配置隐藏变量$auxvar
新建自定义变量,参数设置如下:
- 变量名:
auxvar - 类型:Custom(适用于Grafana 8.0及以上版本,不需要依赖数据源)
- 取值规则:直接写入映射逻辑即可,内容如下:
${{ map $var "label1" "label2=\"blah2\", label3=\"blah3\"" "label2" "label1=\"blah1\", label3=\"blah3\"" "label3" "label1=\"blah1\", label2=\"blah2\"" }} - 隐藏选项:选择「Variable」,完全隐藏该变量不让用户看到
- 刷新规则:选择「On Variable Change」,保证
$var修改时$auxvar自动同步更新
步骤2:直接使用变量
后续面板的查询语句里直接引用$auxvar即可,用户只需要选择$var的取值,$auxvar会自动按照你定义的映射规则完成赋值,无需额外操作。
低版本Grafana兼容方案
如果你的Grafana版本低于8.0不支持模板映射语法,可以用对应数据源的查询语句实现映射,以Prometheus为例:
变量类型选择「Query」,查询语句写为:
label_replace( vector(1), "aux_val", "${{ if eq $var \"label1\" }}label2=\"blah2\", label3=\"blah3\"${{ else if eq $var \"label2\" }}label1=\"blah1\", label3=\"blah3\"${{ else if eq $var \"label3\" }}label1=\"blah1\", label2=\"blah2\"${{ end }}", "", "" ) | label_values(aux_val)
其余参数设置和上述方案一致即可。
内容的提问来源于stack exchange,提问作者mfd
相关产品推荐
相关产品推荐

