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

group_left и info-метрика

Вопрос

Есть http_requests_total{pod} и app_info{pod, version} со значением 1. Как получить RPS с меткой version?

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

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

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

Коротко

Правильный ответ: sum by (version) (rate(httprequeststotal[5m]) on(pod) groupleft(version) appinfo). Метки рядов разные, поэтому сопоставляем только по pod (on(pod)), а groupleft(version) разрешает отношение многие к одному и копирует метку version из правой части.

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

  1. sum by (version) (rate(http_requests_total[5m]) * on(pod) group_left(version) app_info)правильный ответ
  2. sum by (version) (rate(http_requests_total[5m]) * ignoring(version) app_info)
  3. sum by (version) (rate(http_requests_total[5m]) * on(pod) app_info)
  4. sum by (version) (rate(http_requests_total[5m]) + on(pod) group_left app_info)

Разбор

Метки рядов разные, поэтому сопоставляем только по pod (on(pod)), а group_left(version) разрешает отношение многие к одному и копирует метку version из правой части. Умножение на 1 значение не меняет. Без group_left(version) (варианты с ignoring(version) и с голым on(pod)) сопоставление идёт один к одному: метка version в результат не попадёт, а если у пода несколько рядов запросов, запрос упадёт с ошибкой. Сложение изменило бы значения, а group_left без списка меток version не копирует.

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

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