Как подсчитать показатели превышения порога из вектора диапазона в PromQL (Prometheus)

Я определил latency метрику, которую он может запрашивать как скалярную, как показано ниже:

latency{name="Controller/products/show",percentiles="95"}   0.9935112

Затем я сделал запрос. Выходные данные - это вектор диапазона.

latency{name="Controller/products/show",percentiles="95"}[10m]

выход:

element:
latency{name="Controller/products/show",percentiles="95"}

value:
0.9429009 @1584497778.164
0.9150374 @1584497838.164
0.9085548 @1584497898.164
0.9006939 @1584497958.164
0.9390876 @1584498018.164
0.9593425 @1584498138.164
0.96289706 @1584498198.164
0.98113775 @1584498258.164
0.9935112 @1584498318.164

Я хочу подсчитать более 0.95 значений из значений диапазона векторов.

Например, получите 4 из приведенных выше значений диапазона векторов.

У кого-нибудь есть решения?


person takutakahashi    schedule 18.03.2020    source источник


Ответы (1)


Для этой задачи можно использовать подзапрос Prometheus:

count_over_time((latency{name="Controller/products/show",percentiles="95"} > 0.95)[10m:50s])

Обратите внимание, что значение step после двоеточия (50s в приведенном выше примере) должно быть меньше, чем интервал очистки для выбранной метрики, поскольку Prometheus оценивает запрос в круглых скобках в регулярных точках с настроенным интервалом step между ними.

person valyala    schedule 28.03.2020
comment
Спасибо! Я обновил свой выпускной до 2.7.0 и спросил ваше предложение. Получил желаемую стоимость. Я подробно остановлюсь на подзапросе. - person takutakahashi; 30.03.2020