group_left и info-метрика
Вопрос
Есть http_requests_total{pod} и app_info{pod, version} со значением 1. Как получить RPS с меткой version?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
sum by (version) (rate(http_requests_total[5m]) * on(pod) group_left(version) app_info)правильный ответsum by (version) (rate(http_requests_total[5m]) * ignoring(version) app_info)sum by (version) (rate(http_requests_total[5m]) * on(pod) app_info)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 ошибок.