Promql: можно ли получить общее количество в Query_Range

Например, у меня есть запрос 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» за этот конкретный период времени? Я пробовал count_over_time, который дает общее количество. Как добавить фильтр, чтобы он возвращал счетчик при значении == 0 или 1

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

К вашему сведению, фактический запрос - это не http_request, и я могу использовать http_request_total


person Shibankar    schedule 18.06.2020    source источник


Ответы (1)


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

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

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

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

count_over_time(http_response_ok{appname="XXX"==0}[24h:])
person Shibankar    schedule 20.06.2020