Напишите запросы для дашборда
Вопрос
Интервьюер: «Напишите вслух PromQL для дашборда сервиса: RPS по маршрутам, доля ошибок, p99 и насыщение пула соединений к базе. Объясните каждую часть».
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
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 ошибок.