You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prometheus关联两个查询筛选Windows服务时多对多匹配报错如何解决

PromQL关联Windows服务指标报错解决方案

报错原因

  • 本次报错的核心是多对多匹配冲突:当前查询的匹配规则仅指定了on(instance),但同一个instance下存在多个不同的Windows服务(对应不同的name标签),导致windows_service_state和windows_service_start_mode两个指标集在同一个instance下有多条序列对应,不符合PromQL的匹配规则要求。
  • 查询中使用除法运算符/属于误用,需求是取同时满足两个指标筛选条件的交集,不需要做数值运算。

正确查询方案

方案1:用and运算符取交集(最简洁,推荐)

直接匹配两个指标共有的服务唯一标识标签即可实现筛选:

windows_service_state{environment="test", state!="running"} and on(instance, name) windows_service_start_mode{environment="test", start_mode="auto"}

该语句会直接返回测试环境下、状态非running、且启动模式为auto的服务对应指标,完全匹配需求。

方案2:需合并两边标签时使用group_left

如果需要将windows_service_start_mode的标签合并到结果中,修正匹配规则和运算符即可:

windows_service_state{environment="test", state!="running"} * on(instance, name) group_left windows_service_start_mode{environment="test", start_mode="auto"}

这里在匹配规则中增加了name标签来唯一对应单个服务,用乘法代替除法(两个指标的取值均为1,乘法不影响结果,仅用于标签合并)。

注意:上述查询默认依赖Windows exporter默认生成的name标签(对应Windows服务的服务名)作为服务唯一标识,如果你自定义了标签重写规则,需要把对应唯一标识服务的标签加入on()的匹配列表中。

内容的提问来源于stack exchange,提问作者Mr 123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:54:02