В PromQL арифметические бинарные операторы между двумя диапазонами метрик (или векторами) подчиняются сопоставлению векторов : операция применяется только к записям с одинаковым точным набором меток (имя и значение).
Если есть разница, и никакие значения не спарены, вы получите печально известную ошибку No data point
.
Если вы хотите, чтобы они совпадали, вы должны
- либо игнорируя некоторые метки, которые не совпадают (
metric1 - ignoring(a_lone_label) metric2
) - , либо указывая, на какой метке выполняется совпадение (
metric1 - on(common_label_name_and_value) metric2
)
В приведенных вами примерах этонепонятно что должно совпадать.Я бы сказал instance
и job
;это может быть:
increase(application_executor_recordsWritten[...]) - on (job,instance) increase(kafka_server_brokertopicmetrics_messagesin_total{topic="my_topic"}[...])
Если у вас есть одна сторона оператора, содержащая элементы, которые должны быть соединены с более чем одним элементом другой стороны (вызовите сопоставление «один ко многим»), вы должны указатькакая сторона оператора (правая или левая) имеет больше записей: использование group_<side:rigth|left>
.