Переменная запроса PromQL не возвращает данные, но работает в жестком коде - PullRequest
0 голосов
/ 24 июня 2019

Я столкнулся с проблемой, когда процессор показывал более 100%, и решение было разделить его на количество доступных процессоров.

Следующее работало на панели датчиков (используя [ORIGINAL QUERY] / sum(machine_cpu_cores)):

sum(sum by (container_name)( rate(container_cpu_usage_seconds_total[1m] ) ) / count(node_cpu_seconds_total{mode="system"}) * 100 / sum(machine_cpu_cores)

На графике следующие данные не вернут никаких данных, когда [ORIGINAL QUERY] / sum(machine_cpu_cores)):

sum(rate(container_cpu_usage_seconds_total{name=~".+"}[$interval])) by (name) * 100 / sum(machine_cpu_cores)

Однако следующие вернут ожидаемые данные при жестком кодировании значения ([ORIGINAL QUERY] / 12):

sum(rate(container_cpu_usage_seconds_total{name=~".+"}[$interval])) by (name) * 100 / 12

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

1 Ответ

0 голосов
/ 25 июня 2019

Я полагаю, что у вас есть проблемы с наборами меток или, более точно, с количеством элементов

Выведите на экран каждую часть выражения независимо в консоли Prometheus и убедитесь, что метки совпадают (то есть совпадают наборы меток), и выиметь эквивалентное количество элементов на каждой стороне (одинаковое количество элементов для метрики).

Если нет, возможно, вам придется добавить к вашему запросу векторное соответствие выражений.

ОсобенноСоответствие «один ко многим» в последнем выпуске Promql, где может потребоваться / group_left sum(machine_cpu_cores).

...