Prometheus 将两个结果不同的聚合求和,并保留所有结果

Prometheus 将两个结果不同的聚合求和,并保留所有结果,prometheus,promql,Prometheus,Promql,我想创建一个所有服务器的列表,并按团队进行聚合。如果我用一个指标来做这件事,这很容易: 对于Linux:count(node\u uname\u info)by(team) 和Windows:count(wmi操作系统信息)by(团队) 但现在我想将这两个查询聚合为一个,因为我想按团队获得服务器总数 通常我会这样做: count(node\u uname\u info)by(team)+count(wmi\u os\u info)by(team) 但现在我只得到同时拥有Linux和Windows

我想创建一个所有服务器的列表,并按团队进行聚合。如果我用一个指标来做这件事,这很容易:

对于Linux:
count(node\u uname\u info)by(team)

和Windows:
count(wmi操作系统信息)by(团队)

但现在我想将这两个查询聚合为一个,因为我想按团队获得服务器总数

通常我会这样做:
count(node\u uname\u info)by(team)+count(wmi\u os\u info)by(team)

但现在我只得到同时拥有Linux和Windows服务器的团队。
如果一个值不存在,有没有办法假定它为零

我尝试过的问题:

count(node_uname_info) by (team) + count(wmi_os_info) by (team)
count(node_uname_info) by (team) + (count(wmi_os_info) by (team) > 0)
count(node_uname_info) by (team) + on(team) count(wmi_os_info) by (team)

谢谢

如有关的文档所示,不匹配的元素不属于结果的一部分:

在两个瞬时向量之间,对左侧向量中的每个条目及其右侧向量中的匹配元素应用二进制算术运算符[…] 在右向量中找不到匹配项的项不属于结果的一部分

但您可以使用
\uuu name\uuu
内部标签(请参阅)选择多个度量,并在结果向量上应用
计数

count({__name__=~"node_uname_info|wmi_os_info"}) by (team)