Выбор ответа Middle PromQL спрашивают часто обновлено

Сначала rate, потом sum

Вопрос

Почему sum(rate(http_requests_total[5m])) правильно, а rate(sum(http_requests_total)[5m:]) нет?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: Рестарт любого пода роняет сумму, и rate примет это за сброс. rate умеет обрабатывать сброс одного счётчика: если значение уменьшилось, он считает это рестартом.

Варианты ответа

  1. Рестарт любого пода роняет сумму, и rate примет это за сбросправильный ответ
  2. Обе записи эквивалентны, вторая просто медленнее из-за подзапроса
  3. sum нельзя применять к counter, он вернёт ошибку типа
  4. rate не принимает подзапросы, вторая запись не выполнится

Разбор

rate умеет обрабатывать сброс одного счётчика: если значение уменьшилось, он считает это рестартом. У суммы счётчиков рестарт одного пода выглядит как частичное падение, и rate по такой сумме выдаёт мусор (ложные скачки). Поэтому скорость считают по каждому ряду, а потом складывают. Подзапросы rate принимает, и sum к counter применять можно, просто бессмысленно до rate.

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

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