我有一个布尔度量(即样本只有整数0
或1
)称为my_boolean_metric
. 它有各种标签,包括outcome
范围在 values上的标签{"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"})
this 的值始终是整数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
我的分数查询有什么问题?