Выбор ответа Middle PromQL обновлено

Доля ошибок без sum

Вопрос

Что вернёт запрос без агрегации, если есть ряды {status="200"} и {status="500"}?

rate(http_requests_total{status=~"5.."}[5m])
  / rate(http_requests_total[5m])

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

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

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

Коротко

Правильный ответ: Ряд {status="500"} со значением 1, ряды 200 выпадают. Бинарная операция сопоставляет ряды с одинаковыми метками.

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

  1. Правильную долю ошибок для каждого пода
  2. Ошибку синтаксиса: деление рядов с разными метками запрещено
  3. Ряд {status="500"} со значением 1, ряды 200 выпадаютправильный ответ
  4. Пустой результат, потому что метки не совпадают

Разбор

Бинарная операция сопоставляет ряды с одинаковыми метками. Ряд status="500" из числителя находит в знаменателе ряд с теми же метками, то есть самого себя, и результат 1 (100%). Ряды status="200" есть только в знаменателе и пропадают. Правильно агрегировать обе части: sum(rate(...{status=~"5.."}[5m])) / sum(rate(...[5m])) или sum by (job) с обеих сторон. Проверено на движке PromQL из Prometheus 3.5.

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

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