Grafana设置支持按端点类型分组变量以批量应用Prometheus查询吗?
实现Grafana端点分组下拉选择的方案
Grafana完全支持你需要的分组筛选需求,下面提供两种实用的实现方式:
方法一:嵌套关联变量(直观可控)
这种方式通过两个关联变量实现分组选择+自动加载对应端点,适合需要展示具体端点列表的场景:
创建分组变量
- 进入仪表盘设置 → 变量 → 新建变量,类型选择「自定义」
- 名称设为
endpoint_group,选项输入:endpoint,endpointTypeB,endpointTypeC - 切换到「值」标签页,给每个选项设置值映射(显示名称对应实际前缀):
- 显示
endpoint→ 值设为/endpoint/user - 显示
endpointTypeB→ 值设为/endpoint/typeB/user - 显示
endpointTypeC→ 值设为/endpoint/typeC/user
- 显示
创建动态端点变量
- 新建变量,类型选择「Prometheus查询」,名称设为
target_endpoints - 查询语句填写(替换
your_metric为你的实际指标名):label_values(your_metric{endpoint=~"$endpoint_group.*"}, endpoint) - 开启「多值」和「包含全部选项」,这样选择分组后,该变量会自动加载对应分组下的所有端点路径
- 新建变量,类型选择「Prometheus查询」,名称设为
在图表查询中使用
所有图表的Prometheus查询改为:your_metric{endpoint=~"$target_endpoints"}选择分组后,端点变量会自动筛选对应组的所有端点,查询会匹配这些路径。
方法二:单变量+正则匹配(简洁高效)
如果不需要展示具体端点列表,仅通过分组直接匹配所有对应路径,可以用这种方式:
创建分组正则变量
- 新建自定义变量
endpoint_group,选项输入:endpoint,endpointTypeB,endpointTypeC - 切换到「值」标签页,设置值映射为正则表达式:
- 显示
endpoint→ 值设为^/endpoint/user(/.*)?$ - 显示
endpointTypeB→ 值设为^/endpoint/typeB/user(/.*)?$ - 显示
endpointTypeC→ 值设为^/endpoint/typeC/user(/.*)?$
- 显示
- 新建自定义变量
在图表查询中使用
直接用变量的正则值匹配:your_metric{endpoint=~"$endpoint_group"}选择分组后,查询会自动匹配该分组下的所有端点路径。
注意事项
- 确保你的Prometheus指标中
endpoint标签存储的是完整路径,正则或前缀匹配才能生效 - 变量的「值映射」是核心,要保证显示的友好名称和实际用于匹配的值对应准确
- 方法一的优势是用户可以看到具体端点,还能手动选择单个端点;方法二更简洁,适合只需要分组维度的场景
内容的提问来源于stack exchange,提问作者wltz
相关产品推荐
相关产品推荐

