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

如何编写PromQL实现按namespace统计my_metric<1的次数并补0?

解决按Namespace统计指标小于1的次数并补0的PromQL查询

正确查询语句

sum by (namespace) (my_metric < 1) 
or on(namespace) 
group_left() (count by(namespace) (my_metric) * 0)

语句解释

  1. my_metric < 1:将每个指标值转换为数值结果——当指标值小于1时返回1,否则返回0。
  2. sum by(namespace):按namespace分组求和,得到每个namespace下指标值小于1的总次数。这一步仅会返回存在符合条件记录的namespace(比如示例中的a)。
  3. count by(namespace)(my_metric) * 0:先统计每个namespace下的my_metric序列数量(核心作用是保留所有存在my_metric的namespace标签),再乘以0将值置为0,生成所有namespace对应的0值记录。
  4. or on(namespace) group_left():通过namespace标签匹配左右两边的结果,左边已存在的记录保留原值,左边缺失的记录用右边的0值补充,最终所有namespace都会有输出。

示例验证

执行上述查询后,会得到你期望的结果:

{namespace="a"} 2
{namespace="b"} 0
{namespace="c"} 0

之前尝试的问题分析

  • sum by (namespace) (count(my_metric < 1) by (namespace)):my_metric < 1会先过滤掉不满足条件的序列,count操作仅统计有符合条件序列的namespace,因此最终结果仅包含a。
  • or on(namespace) vector(0):vector(0)没有任何标签,无法通过namespace标签与缺失的namespace匹配,因此无法为b、c补充0值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 06:42:34