Как получить максимальное использование процессора в кубернетах за промежуток времени (скажем, 30 дней) в Promql? - PullRequest
0 голосов
/ 07 ноября 2019

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

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

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

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

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

1 Ответ

3 голосов
/ 10 ноября 2019

Вам нужно захватить внутреннее выражение (скорость использования процессора контейнером) как правило записи :

- 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 дней!)

...