Как получить максимальное использование ЦП модуля в кубернетах за интервал времени (скажем, 30 дней) в promql?

Я пытаюсь оценить запрос ресурсов (ЦП) и предельные значения, для которых я хочу знать максимальное использование ЦП модуля за последний месяц с помощью prometheus.

Я проверил этот вопрос, но не смог получить то, что хочу Диапазон генерации векторы из возвращаемых значений в запросах Prometheus

Я пробовал это, но кажется, что max_over_time не работает слишком дорого

max (  
  max_over_time(
    rate(
      container_cpu_usage_seconds_total[5m]
    )[30d]
  )
) by (pod_name)

недопустимый параметр 'query': ошибка синтаксического анализа в char 64: спецификации диапазона должен предшествовать селектор метрики, но вместо этого следует * promql.Call


person mad_boy    schedule 07.11.2019    source источник
comment
Какая у вас версия Prometheus?   -  person Jakub    schedule 08.11.2019


Ответы (2)


Вам нужно будет зафиксировать внутреннее выражение (скорость использования ЦП контейнера) как правило записи :

- record: container_cpu_usage_seconds_total:rate5m
  expr: rate(container_cpu_usage_seconds_total[5m])

затем используйте этот новый временной ряд для вычисления max_over_time:

max (  
  max_over_time(container_cpu_usage_seconds_total:rate5m[30d])
) by (pod_name)

Это необходимо только в версиях Prometheus до 2.7, поскольку подзапросы могут быть рассчитаны на лету., дополнительные сведения см. в этом сообщении в блоге.

Однако имейте в виду, что если вы планируете использовать этот составной запрос (максимум max_per_time данных, собранных за последние 30 дней) для оповещения или визуализации (а не одноразового запроса), тогда вы по-прежнему хотите использовать правило записи для повышения производительности запроса. Это классический компромисс вычислительной сложности CS (память / дисковое пространство, необходимое для хранения правила записи в виде отдельного временного ряда, по сравнению с вычислительными ресурсами, необходимыми для обработки данных в течение 30 дней!)

person ekarak    schedule 10.11.2019

Пожалуйста, попробуйте что-нибудь вроде этого:

max_over_time(sum(rate(container_cpu_usage_seconds_total{pod="pod-name-here-759b8f",container_name!="POD", container_name!=""}[1m])) [720h:1s])

person Vinicius Peres    schedule 14.01.2020