Запрос Prometheus для расчета общего количества запросов с задержкой менее 1 с

Это мой SLO, 99,5% успешных запросов (без ответов с 500 ошибками) с задержкой менее 1200 мс. Мне нужно написать правило оповещения. Логика - это количество ответов, отличных от 500, с задержкой <1200 мс, деленное на общее количество запросов. Приложение, которое у меня есть, не находится в пространстве имен по умолчанию в Kubernetes, поэтому я не могу использовать метрики prometheus_http_total_requests (например, в promtools.dev), мне приходится делать это вручную. Сначала я вычисляю задержку, используя это выражение:

      sum(rate(http_server_requests_seconds_sum{job="myjob", status!~"5.."}[30d]))
/
sum(rate(http_server_requests_seconds_count{job="myjob", status!~"5.."}[30d]))

Затем я отфильтровываю и включаю только задержку ниже 1,2 с с помощью оператора <. Я застрял на этом этапе, как мне создать счетчик, чтобы получить общее количество запросов, удовлетворяющих < 1.2sусловие задержки. я пытался count_over_time, count, видимо они не работали. Это то, что я сделал изначально, но очевидно, что это неправильно:

       ( sum(rate(http_server_requests_seconds_sum{job="myjob", status!~"5.."}[3d]))
   /
   sum(rate(http_server_requests_seconds_count{job="myjob", status!~"5.."}[3d])) ) < 1.2 )
 /
 ((sum(rate(http_server_requests_seconds_sum{job="myjob"}[3d]))
   /
   sum(rate(http_server_requests_seconds_count{job="myjob"}[3d])) ) >= 0

0 ответов

Другие вопросы по тегам