From a701cd8f29bd95b0f3127a53d18c4abac22e1b11 Mon Sep 17 00:00:00 2001 From: wanyaoqi <18528551+wanyaoqi@users.noreply.github.com> Date: Sun, 5 Feb 2023 21:53:17 +0800 Subject: [PATCH] fix(host-metrics): bytes sent overflow (#15899) bytes_sent recount unexpected, discard the count before new round. Signed-off-by: wanyaoqi --- pkg/hostman/hostmetrics/hostmetrics.go | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/pkg/hostman/hostmetrics/hostmetrics.go b/pkg/hostman/hostmetrics/hostmetrics.go index 23c35a9b74..19c6fd2ef1 100644 --- a/pkg/hostman/hostmetrics/hostmetrics.go +++ b/pkg/hostman/hostmetrics/hostmetrics.go @@ -369,10 +369,26 @@ func (s *SGuestMonitorCollector) reportNetIo(cur, prev *NetIOMetric) { diffTime := float64(timeCur - timeOld) if diffTime > 0 { - cur.BPSSent = float64((cur.BytesSent-prev.BytesSent)*8) / diffTime - cur.BPSRecv = float64((cur.BytesRecv-prev.BytesRecv)*8) / diffTime - cur.PPSSent = float64(cur.PacketsSent-prev.PacketsSent) / diffTime - cur.PPSRecv = float64(cur.PacketsRecv-prev.PacketsRecv) / diffTime + if cur.BytesSent < prev.BytesSent { + cur.BPSSent = float64(cur.BytesSent*8) / diffTime + } else { + cur.BPSSent = float64((cur.BytesSent-prev.BytesSent)*8) / diffTime + } + if cur.BytesRecv < prev.BytesRecv { + cur.BPSRecv = float64(cur.BytesRecv*8) / diffTime + } else { + cur.BPSRecv = float64((cur.BytesRecv-prev.BytesRecv)*8) / diffTime + } + if cur.PacketsSent < prev.PacketsSent { + cur.PPSSent = float64(cur.PacketsSent) / diffTime + } else { + cur.PPSSent = float64(cur.PacketsSent-prev.PacketsSent) / diffTime + } + if cur.PacketsRecv < prev.PacketsRecv { + cur.PPSRecv = float64(cur.PacketsRecv) / diffTime + } else { + cur.PPSRecv = float64(cur.PacketsRecv-prev.PacketsRecv) / diffTime + } } }