diff --git a/errors.go b/errors.go index 1dabc8e..e159164 100644 --- a/errors.go +++ b/errors.go @@ -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() } diff --git a/snmp.go b/snmp.go index 0d430b3..9da65ae 100644 --- a/snmp.go +++ b/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 } }