Те "большие экспоненциальные значения", которые вы видите, являются кумулятивными. Т.е. ЦП (или все ядра ЦП?) Простаивали более 1000 часов (4.25e6 / 3600) с момента запуска виртуальной машины, поэтому они выглядят очень разумно.
Причина, по которой вы получаете отрицательные значения, заключается в том, чтовыборки. Теоретически все выборки с точностью до scrape_interval секунд с точностью до миллисекунды, и задержка сети и время обработки экспортера для каждой очистки абсолютно одинаковы. На практике очистка может быть отложена или даже пропущена, сетевая задержка меняется, и ваша целевая виртуальная машина может время от времени привязывать свой ЦП (или зависать по любой причине).
Это означает, что, например, это вполне возможно для одного образцаnode_cpu_seconds_total
иметь значение V
в (номинально) время T
и значение V + 1
в (номинально) время T + 10s
, в результате чего коэффициент простоя составит 110%. Или какие бы ценности вы ни хотели придумать. irate
усугубляет эту проблему, потому что она всегда рассматривает два последовательных образца, увеличивая относительную ошибку измерения (ошибку относительно времени между выборками).
Вы ничего не можете с этим поделать, кроме как принять, что это неидеальное измерение и ударить clamp_min(<your_expression>, 0)
поверх него. Использование rate
вместо irate
также может уменьшить ошибку и, как правило, является хорошей идеей, если вы не смотрите на свои данные в полном разрешении.