Здесь можно развернуть несколько вещей.
Сначала rate
против irate
. Ни связанный вопрос, ни сообщение в блоге не обращаются к этому (но ответ Эйтана не затрагивает его). Разница в том, что rate
оценивает среднюю скорость в запрошенном диапазоне (в вашем случае - 1 минуту), а irate
вычисляет скорость только на основе двух последних выборок. Оставляя в стороне часть «оценки» (см. этот ответ , если вам интересно) практическое различие между двумя заключается в том, что rate
сгладит результат, тогда как irate
вернет выборку ЦП. использование, которое, скорее всего, покажет крайности в использовании процессора, но также более склонно к псевдонимам .
например. если вы посмотрите на загрузку ЦП Прометея, вы заметите, что он имеет довольно постоянную базовую линию, и каждый раз при оценке большой группы правил наблюдается скачок. Учитывая временной интервал, который был по крайней мере таким же, как интервал оценки Прометея, если бы вы использовали rate
, вы бы получили более или менее постоянное использование ЦП с течением времени (то есть плоская линия). С irate
(при условии интервала очистки 5s
) вы получите одну из 2 вещей:
- если ваше разрешение (то есть шаг) не было выровнено с интервалом оценки Prometheus (например, разрешение было
1m
, а интервал оценки был 13s
), вы бы получили случайную выборку использования ЦП и, надеюсь, увидели бы значения близко к максимальному и наименьшему использованию ЦП во времени на графике;
- если ваше разрешение было выровнено с интервалом оценки Prometheus (например,
1m
разрешение и 15s
интервал оценки), то вы бы везде увидели базовое использование ЦП (потому что вы случайно посмотрели на интервалы 5s
, установленные 1 с интервалом в одну минуту, когда оценка правил не происходит) или пиковое использование ЦП везде (потому что вы случайно видите интервалы в 5s
с интервалом в 1 минуту, каждый из которых охватывает оценку правил).
Что касается второго пункта, кажущейся путаницы в том, что представляет собой метрика node_cpu_seconds_total
, это счетчик . То есть это число, которое непрерывно увеличивается и, по сути, измеряет количество времени, в течение которого процессор простаивал с момента запуска экспортера. Абсолютное значение не так уж и полезно (поскольку оно зависит от того, когда был запущен экспортер, и будет падать до 0 при каждом перезапуске). Что интересно, так это то, насколько он увеличился за определенный период времени: из этого вы можете рассчитать для заданного периода времени скорость увеличения в секунду (среднее значение с rate
; мгновенное с irate
) или абсолютный прирост (с increase
). Таким образом, rate(node_cpu_seconds_total{mode="idle"}[1m])
и irate(node_cpu_seconds_total{mode="idle"}[1m])
дадут вам соотношение (между 0.0
и 1.0
) того, сколько ЦП не использовалось (за последнюю минуту и соответственно между последними 2 выборками).