Рассчитайте вероятность успеха с помощью Прометея, когда числитель равен нулю - PullRequest
0 голосов
/ 26 июня 2019

У нас есть много вариантов использования, когда мы хотим вычислить показатель успешности, но не было выполненных задач, мы ожидаем, что коэффициент успешности будет равен 0, но его нет.

Давайте возьмем эти показатели в качестве примера:

http_requests_total{state="failure"} = 10

http_requests_total{state="succes"} - never happened so there is no value at all

Я хотел бы рассчитать вероятность успеха (в данном случае это 0). Исполнительский отдел:

http_requests_total{state="success} / sum(http_requests_total) ignoring (state)

не возвращает точек данных.

Есть предложения? Я делаю это неправильно?

Пытался выполнить:

(http_requests_total{state="success} or 0)/ sum(http_requests_total) ignoring (state)

но или оператор не работает

Я ожидаю, что на выходе будет 0, но это "Нет точек данных"

1 Ответ

0 голосов
/ 26 июня 2019

Это не так просто сделать, и это одна из причин, по которой рекомендуется не иметь метрики, которые появляются только тогда, когда что-то происходит.

Если вы не можете обработать данные с нулевой вероятностью успеха на более позднем этапе (например, в Grafana с использованием опции «ноль как ноль») версия or, которая, кажется, имеет все соответствующие метки, соответствующие правильно, могла бы быть:

http_requests_total{state="success"} or
 label_replace(0 * sum without (state) (http_requests_total), "state", "success", "__name__", ".*")

Этот (ab) использует label_replace для синтеза элементов с state="success" там, где их нет и выглядит не очень красиво.

...