У меня есть логическая метрика (т. Е. Сэмплы только из целых чисел 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), даже если каждый проверенный запрос по отдельности возвращает целое число.
(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
Что не так с моим дробным запросом?