Графана: объединение двух запросов от двух экспортеров прометея - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть два экспортера для подачи данных в прометей - экспортер узла и эластичный поиск . Я пытаюсь объединить источники от обоих экспортеров в один запрос, но, к сожалению, получаю «Нет точек данных» на графике.

Каждая серия успешно показывает данные:

  1. asticsearch_jvm_memory_max_bytes {cluster = "$ cluster", name = ~ "$ node"} enter image description here

  2. node_memory_MemTotal {имя = ~ "$ узел"} enter image description here

Это результат, когда я пытаюсь вычесть две серии друг из друга:

  1. node_memory_MemTotal {name = ~ "$ node"} --asticsearch_jvm_memory_max_bytes {cluster = "$ cluster", name = ~ "$ node"} enter image description here

Что мне здесь не хватает?

Спасибо.

1 Ответ

0 голосов
/ 03 сентября 2018

Вычитание, которое вы пытаетесь здесь, является более сложным, чем читается в начале. По обе стороны от оператора - находятся запросы, которые могут привести к одному или нескольким временным рядам. Таким образом, запрошенная операция работает следующим образом: выполните запрос с левой стороны и получите результат одного или нескольких временных рядов. Временной ряд означает уникальную комбинацию метрики и всех ее меток и их значений. Затем выполняется второй запрос для вашей правой части, который также приводит к одному или нескольким временным рядам. Теперь для вычисления результатов используются только те комбинации с соответствующими комбинациями меток.

Для вашего примера это означает, что метрики из node_exporter и из elasticsearch_exporter имеют разные имена меток (или даже только разные значения для меток). Если с обеих сторон не существует комбинаций, вы увидите пустой результат. Подробнее о том, как применяются операторы, см. Документы prometheus .

.

Чтобы решить вашу проблему, вы можете сделать следующее:

  • Проверьте метрики как левой, так и правой стороны самостоятельно
  • Оценить, есть ли дополнительные метки, которые можно игнорировать
  • Проверьте, есть ли подходящая метка для сопоставления (например, экземпляр / узел / имя хоста)
  • Используйте ignoring(a,b,c) на требуемой стороне, чтобы сбросить лишние размеры, например, job
...