Promql: можно ли получить общее количество в Query_Range - PullRequest
0 голосов
/ 18 июня 2020

Например, у меня есть запрос prometheus, который возвращает «1» в HTTP-статусе 200 и «0» в HTTP-статусе, отличном от 200. Теперь я использую api query_range, в котором я передаю диапазон времени (начало и конец) и шаг.

API-Endpoint: http://my-prometheus.com/api/v1/query_range
Query: http_response_ok{appname="XXX"}
Start: 2020-06-17T00:00:00
end:2020-06-17T23:59:59
step: 300000ms     (=5min)

Приведенный выше запрос возвращает мне данные за каждые 5 минут в течение всего дня в виде «0» и «1». Всего около 289 баллов.

Можно ли получить общее количество всех «1» и «0» за указанный c период времени? Я пробовал count_over_time , который дает общее количество. Как добавить фильтр, чтобы он возвращал счетчик, когда значение == 0 или 1

count_over_time(http_response_ok{appname="XXX"}[24h])

FYI, фактический запрос не http_request, и я могу использовать http_request_total

1 Ответ

1 голос
/ 20 июня 2020

После некоторых исследований я смог найти ответ. В основном внутри {} мы делаем ч / б лейбл проверки. Вне {} мы можем поместить условие для значений.

Итак, чтобы найти общее количество, где значение равно == 1 за последние 24 часа, запрос должен быть таким:

count_over_time(http_response_ok{appname="XXX"==1}[24h:])

И чтобы найти общее количество, где значение == 0 за последние 24 часа, запрос должен быть таким:

count_over_time(http_response_ok{appname="XXX"==0}[24h:])
...