Выбор ответа Middle PromQL спрашивают часто обновлено
Сначала rate, потом sum
Вопрос
Почему sum(rate(http_requests_total[5m])) правильно, а rate(sum(http_requests_total)[5m:]) нет?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Рестарт любого пода роняет сумму, и rate примет это за сброс. rate умеет обрабатывать сброс одного счётчика: если значение уменьшилось, он считает это рестартом.
Варианты ответа
- Рестарт любого пода роняет сумму, и rate примет это за сбросправильный ответ
- Обе записи эквивалентны, вторая просто медленнее из-за подзапроса
- sum нельзя применять к counter, он вернёт ошибку типа
- rate не принимает подзапросы, вторая запись не выполнится
Разбор
rate умеет обрабатывать сброс одного счётчика: если значение уменьшилось, он считает это рестартом. У суммы счётчиков рестарт одного пода выглядит как частичное падение, и rate по такой сумме выдаёт мусор (ложные скачки). Поэтому скорость считают по каждому ряду, а потом складывают. Подзапросы rate принимает, и sum к counter применять можно, просто бессмысленно до rate.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.