Дробный запрос PromQL, возвращающий `null`, когда ожидается скалярное значение - PullRequest
0 голосов
/ 01 октября 2018

У меня есть логическая метрика (т. Е. Сэмплы только из целых чисел 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

Что не так с моим дробным запросом?

...