Grafana模板变量配置问题:如何动态切换Notebook标签键值?
解决Grafana联动变量无法显示Notebook标签键值的问题
问题分析
你的变量定义存在核心错误,导致下拉菜单无数据:
label_key变量使用label_values(kube_pod_labels, __name__)会返回指标名(即kube_pod_labels),而非实际的标签键- 若
kube_pod_labels是kube-state-metrics生成的拆分型指标(每条序列对应一个Pod标签,带label_key和label_value标签),需调整变量查询逻辑
解决步骤
1. 修正label_key变量
- 变量类型:Query
- 数据源:Prometheus
- 查询语句:
label_values(kube_pod_labels, label_key) - 可选设置:若需过滤系统标签,可添加过滤条件:
label_values(kube_pod_labels{label_key=~"notebook.*|team.*"}, label_key)
2. 修正label_value变量
- 变量类型:Query
- 数据源:Prometheus
- 查询语句:
label_values(kube_pod_labels{label_key="$label_key"}, label_value) - 关键设置:在变量的「Refresh」选项中选择On variable change,确保切换
label_key时label_value自动更新
3. 调整原始GPU显存查询
将固定的label_notebook_name="gen-ai-solutions"替换为变量联动逻辑:
sum(DCGM_FI_DEV_FB_TOTAL) by (exported_pod) * on (exported_pod) group_left() label_replace( kube_pod_labels{label_key="$label_key", label_value="$label_value"}, "exported_pod", "$1", "pod", ".*")
备选方案(针对传统kube_pod_labels结构)
若你的kube_pod_labels是将Pod标签直接作为指标标签(如label_notebook_name、label_team),需调整变量逻辑:
修正label_key变量
- 查询语句:
label_names(kube_pod_labels) - Regex过滤:在变量设置的「Regex」栏填写
/^label_(.*)$/,提取标签键的核心名称(如从label_notebook_name得到notebook_name)
修正label_value变量
- 查询语句:
label_values(kube_pod_labels, ${label_key}) - 若Grafana 7.5.8不支持直接引用变量作为标签名,改用
query_result:query_result(kube_pod_labels{${label_key}!=""}) - Regex提取:在「Regex」栏填写
/.*${label_key}="(.*)".*/,提取标签值
验证步骤
- 打开Prometheus表达式浏览器,测试
label_values(kube_pod_labels, label_key)是否返回预期的标签键 - 在Grafana变量设置中点击「Preview values」,确认下拉选项正常显示
- 切换变量值,检查GPU显存面板是否正确过滤结果
内容的提问来源于stack exchange,提问作者kumar
相关产品推荐
相关产品推荐

