Я использую правило записи 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-й пул был в 00:00:00. Здесь instance: node_cpu_usage: rate5m не рассчитывается, поскольку для функции оценки необходимо минимум 2 точки данных.
- 2-е извлечение было в 00:00:15. Здесь экземпляр: node_cpu_usage: rate5m рассчитывается как разность данных 2-го и 1-го импульсов, разделенных на 300 секунд. Теперь это проблема, почему функция деления ставки на 300 вместо 15.
- 3-я тяга была в 00:00:45. Опять же, происходит тот же сценарий.
- Неправильные данные сохраняются в экземпляре: 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 минут данных.
Это ожидаемый характер функции оценки?