Ответ вслух Middle PromQL спрашивают часто обновлено

Напишите запросы для дашборда

Вопрос

Интервьюер: «Напишите вслух PromQL для дашборда сервиса: RPS по маршрутам, доля ошибок, p99 и насыщение пула соединений к базе. Объясните каждую часть».

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «RPS по маршрутам: sum by (route) (rate(httprequeststotal[$rateinterval])); rate по каждому ряду, потому что счётчики подов сбрасываются независимо, потом сумма.

Что должно прозвучать в ответе

  • RPS: `sum by (route) (rate(..._total[5m]))`, почему rate до sum

  • Доля ошибок: sum в числителе и знаменателе, регулярка `5..`

  • p99: rate по бакетам, `sum by (le)`, `histogram_quantile`

  • Насыщение: gauge ожидающих или время ожидания соединения

  • Окно rate и `$__rate_interval`

  • Ограничения: точность бакетов, сбросы, пустые ряды

Что могут спросить следом

  • Как построить p99 отдельно по каждому маршруту?
  • Почему график irate за неделю выглядит иначе, чем rate?

Разбор

Образцовый ответ: «RPS по маршрутам: sum by (route) (rate(http_requests_total[$__rate_interval])); rate по каждому ряду, потому что счётчики подов сбрасываются независимо, потом сумма. Доля ошибок: sum(rate(...{status=~"5.."}[5m])) / sum(rate(...[5m])), обе части агрегирую, иначе метки не совпадут. p99: histogram_quantile(0.99, sum by (le) (rate(http_request_duration_seconds_bucket[5m]))), le сохраняю обязательно, по маршрутам sum by (le, route). Насыщение пула: gauge ожидающих запросов соединения, например sum(db_pool_waiting), или p99 времени ожидания соединения из гистограммы. Окно беру $__rate_interval, чтобы при любом масштабе в окне было несколько точек. Помню, что квантиль из гистограммы приближённый и ограничен границами бакетов».

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.