Назад | Перейти на главную страницу

Прометей, group_left и «on» против «игнорирования»

В Выпуск № 2204, один из разработчиков Prometheus говорит:

... в принципе, вы должны отдавать предпочтение ignoring над on для создания общих правил совместного использования ...

Я не понимаю, как использовать ignoring приведет к более общим правилам. Например, рассмотрим ситуацию, когда у нас есть одна «информационная» метрика для устройства и несколько статистических данных, например:

device_info{id="1", owner="coyote", project="acme"}
device_rx_bytes{id="1"}
device_tx_bytes{id="1"}
device_rx_errors{id="1"}
device_tx_errors{id="1"}

Если я хочу получить скорость получения по проектам, мне нужно будет соотнести device_rx_bytes метрика с соответствующей device_info метрика. Для меня это пахнет соединением SQL, и я бы написал:

rate(device_rx_bytes[5m]) * on(id) group_left(project) device_info

Это кажется "общим" в том смысле, что делает только предположения о метке, используемой для группировки (id) и метку, которую мы хотим распространить на наши результаты (project). Если я понимаю ignoring Оператор правильно, соответствующее выражение было бы более сложным, потому что мне нужно было бы перечислить все метки с правой стороны, которых нет в левой части. Что-то вроде:

rate(device_rx_bytes[5m]) * ignoring(owner, project) group_left(project) device_info

Это правильно? И если это так, то почему ignoring предпочтительнее on (не только в приведенной выше цитате, но и в различной документации и примерах)?