如何在Grafana仪表盘中创建映射类型的group变量?
实现Grafana服务组变量与指标聚合的方案
方案一:Grafana自定义组变量(灵活易维护)
这种方式无需修改Victoria Metrics配置,直接在Grafana内完成分组定义:
- 打开仪表盘的「设置」→「变量」→「添加变量」
- 变量类型选「自定义」,变量名填
group - 在「选项」区域,按
组名 : 服务正则的格式手动输入分组规则,示例:支付组 : serviceA|serviceB|serviceC 用户组 : serviceD|serviceE 订单组 : serviceF - 勾选「自定义选项」,确保下拉列表只显示组名,选中后变量实际值为对应的服务正则表达式
- 保存变量
修改指标查询语句为:
avg(rate(http_requests_total{service=~"$group"}[5m]))
选中组名后,会自动匹配该组下所有服务的请求指标并计算平均值。
方案二:Victoria Metrics relabeling打组标签(适合固定分组)
如果服务分组是固定的,可以在VM层面给服务添加group标签,后续Grafana直接通过标签过滤:
配置VM的metric_relabel_configs
在VM的配置文件中添加以下规则,通过匹配服务名给指标打组标签:
metric_relabel_configs: # 匹配支付组服务,添加group标签 - source_labels: [service] regex: 'serviceA|serviceB|serviceC' target_label: group replacement: '支付组' action: replace # 匹配用户组服务,添加group标签 - source_labels: [service] regex: 'serviceD|serviceE' target_label: group replacement: '用户组' action: replace # 匹配订单组服务,添加group标签 - source_labels: [service] regex: 'serviceF' target_label: group replacement: '订单组' action: replace
重启Victoria Metrics使配置生效。
在Grafana配置Group变量
- 进入仪表盘「设置」→「变量」→「添加变量」
- 变量类型选「查询」,数据源选择你的Victoria Metrics实例
- 查询语句填写:
label_values(http_requests_total, group),自动获取所有已定义的组名 - 保存变量
修改指标查询语句为:
avg(rate(http_requests_total{group="$group"}[5m]))
这种方式无需在Grafana维护正则,直接通过group标签过滤分组。
内容的提问来源于stack exchange,提问作者voipp
相关产品推荐
相关产品推荐

