我想计算某个时间范围内给定指标非零的百分比时间。我知道我可以使用
获取该时间范围内的值数 count_over_time(my_metric[1m])
但我想要的是
count_over_time(my_metric[1m] != 0) / count_over_time(my_metric)
我无法做到这一点,因为binary expression must contain only scalar and instant vector types
。
有没有办法做我正在尝试的事情?
答案 0 :(得分:3)
如果值只能是0或1,那么您可以使用avg_over_time
。
如果它可以有其他值,则需要通过录制规则将其转换为0或1:
my_metric_nonzero = my_metric != bool 0
然后你可以avg_over_time(my_metric[1m])
另见https://www.robustperception.io/composing-range-vector-functions-in-promql/