Выполняет функцию скорости в течение N минут, когда присутствует только меньше данных - PullRequest
0 голосов
/ 08 апреля 2020

Я использую правило записи Prometheus, чтобы зафиксировать использование ЦП в течение 5 минут, а позже хочу использовать его для получения максимальной загрузки ЦП за 5 минут за последние 30 дней.

Правило записи

- expr: 1 - avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m]))
  record: instance:node_cpu_usage:rate5m

Макс. Процессор, использованный в последние 30 дней в течение 5 минут

max_over_time(instance:node_cpu_usage:rate5m[30d])

Теперь давайте представим ситуацию, когда Прометей начинает извлекать данные с интервалом 15 с c, который начался в 00:00:00, поэтому

  1. 1-й пул был в 00:00:00. Здесь instance: node_cpu_usage: rate5m не рассчитывается, поскольку для функции оценки необходимо минимум 2 точки данных.
  2. 2-е извлечение было в 00:00:15. Здесь экземпляр: node_cpu_usage: rate5m рассчитывается как разность данных 2-го и 1-го импульсов, разделенных на 300 секунд. Теперь это проблема, почему функция деления ставки на 300 вместо 15.
  3. 3-я тяга была в 00:00:45. Опять же, происходит тот же сценарий.
  4. Неправильные данные сохраняются в экземпляре: node_cpu_usage: rate5m до 5-й минуты.

Таким образом, выполняется max_over_time (instance: node_cpu_usage: rate5m [ 30d]) наверняка даст мне первое значение, которое неверно. Прямо сейчас я использую [! [Max_over_time (instance: node_cpu_usage: rate5m [30d: 5m])] * , чтобы не учитывать первые 5 минут данных.

enter image description here

Это ожидаемый характер функции оценки?

...