Вычитание, которое вы пытаетесь здесь, является более сложным, чем читается в начале. По обе стороны от оператора -
находятся запросы, которые могут привести к одному или нескольким временным рядам. Таким образом, запрошенная операция работает следующим образом: выполните запрос с левой стороны и получите результат одного или нескольких временных рядов. Временной ряд означает уникальную комбинацию метрики и всех ее меток и их значений. Затем выполняется второй запрос для вашей правой части, который также приводит к одному или нескольким временным рядам. Теперь для вычисления результатов используются только те комбинации с соответствующими комбинациями меток.
Для вашего примера это означает, что метрики из node_exporter
и из elasticsearch_exporter
имеют разные имена меток (или даже только разные значения для меток). Если с обеих сторон не существует комбинаций, вы увидите пустой результат. Подробнее о том, как применяются операторы, см. Документы prometheus .
.
Чтобы решить вашу проблему, вы можете сделать следующее:
- Проверьте метрики как левой, так и правой стороны самостоятельно
- Оценить, есть ли дополнительные метки, которые можно игнорировать
- Проверьте, есть ли подходящая метка для сопоставления (например, экземпляр / узел / имя хоста)
- Используйте
ignoring(a,b,c)
на требуемой стороне, чтобы сбросить лишние размеры, например, job