Filter out insane utilization from counter resets and log new utilization errors
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -138,6 +138,7 @@ func (e *ErrorTracker) AddUtilizationError(node *Node, portName string, utilizat
|
||||
FirstSeen: now,
|
||||
LastUpdated: now,
|
||||
}
|
||||
log.Printf("[ERROR] high utilization on %s %s: %.0f%%", node.DisplayName(), portName, utilization)
|
||||
e.t.NotifyUpdate()
|
||||
}
|
||||
|
||||
|
||||
12
snmp.go
12
snmp.go
@@ -304,16 +304,14 @@ func (t *Tendrils) queryInterfaceStats(snmp *gosnmp.GoSNMP, node *Node, ifNames
|
||||
stats.OutPktsRate = float64(outPkts-prev.outPkts) / elapsed
|
||||
stats.InBytesRate = float64(inBytes-prev.inBytes) / elapsed
|
||||
stats.OutBytesRate = float64(outBytes-prev.outBytes) / elapsed
|
||||
if stats.InPktsRate < 0 {
|
||||
|
||||
maxBytesRate := float64(stats.Speed) / 8 * 2
|
||||
if stats.InBytesRate < 0 || stats.InBytesRate > maxBytesRate {
|
||||
stats.InPktsRate = 0
|
||||
}
|
||||
if stats.OutPktsRate < 0 {
|
||||
stats.OutPktsRate = 0
|
||||
}
|
||||
if stats.InBytesRate < 0 {
|
||||
stats.InBytesRate = 0
|
||||
}
|
||||
if stats.OutBytesRate < 0 {
|
||||
if stats.OutBytesRate < 0 || stats.OutBytesRate > maxBytesRate {
|
||||
stats.OutPktsRate = 0
|
||||
stats.OutBytesRate = 0
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user