我有一个布尔量度(即样本仅是0
或1
的整数),称为my_boolean_metric
。它具有各种标签,包括范围在值outcome
上的标签{"success", "failure"}
。我正在尝试一个分数查询,该查询应始终返回介于0
和1
之间的浮点值。
分子查询返回与给定标签匹配的my_boolean_metric
时间序列的数目,如果没有这样的时间序列,则返回0
。
(count(my_boolean_metric{app="abc", team=~"foo", instance=~"bar", outcome="success"}) or (1 - absent(my_boolean_metric{app="abc", team=~"nirvana", instance=~"bar", outcome="success"})))
返回的值是介于0
和n
之间的整数。
分母查询返回与给定标签匹配的my_boolean_metric
时间序列数,与分子查询不同,分母查询不关心“结果”标签。
count(my_boolean_metric{app="abc", team=~"foo", instance=~"bar"})
此值始终是整数n
。
以下分数查询返回null
(即Prometheus / Thanos UI中的“未找到数据点”),即使每个经过测试的查询都返回一个整数。
(count(my_boolean_metric{app="abc", team=~"foo", instance=~"bar", outcome="success"}) or (1 - absent(my_boolean_metric{app="abc", team=~"foo", instance=~"bar", outcome="success"}))) / count(my_boolean_metric{app="abc", team=~"foo", instance=~"bar"})
以下带有硬编码分母的分数查询的确成功。
(count(my_boolean_metric{app="abc", team=~"foo", instance=~"bar", outcome="success"}) or (1 - absent(my_boolean_metric{app="abc", team=~"foo", instance=~"bar", outcome="success"}))) / 9
我的分数查询怎么了?