В Выпуск № 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
(не только в приведенной выше цитате, но и в различной документации и примерах)?