在prometheus利用公式:100 - (avg by (instance) (irate(node_cpu{instance="xxx", mode="idle"}[5m])) * 100) 計算cpu使用率,如果cpu低負載,且多核(我的是32核)的情況下,會出現負數。
原因:cpu的使用數據都是測算值來的(CPU處於空閑狀態時間比例。一般而言,idel + user + nice 約等於100%)。當cpu處於多核、低負載的情況下,值的差異會被放大,從而導致出現負數的情況。
解決方法:
換成公式:avg by (ip)(irate(node_cpu_seconds_total{mode=~"sytem|user|iowait|irq|softirq|nice|steal|guest"}[5m])) * 100