我正在开发一个项目,借助 SNMP 和 MRTG、RRDTool 来监控网络设备。作为带宽监控的一部分,我可以获得每个时间分辨率的最大使用带宽。
同时,我需要维护总数据使用量的历史记录。我知道可以从 vnStat 获得。但我不知道如何用 SNMP 来实现这一点。
答案1
从 SNMP 获取带宽的方法是查询计数器,最好是 64 位计数器 ( ifHCInOctets
, ifHCOutOctets
)。然后,您在已知时间段后查询同一个计数器,并进行简单的数学运算(其中C₁ 是第一个计数,并且C2 第二):
那么有两种方法可以获取总字节数:
只需使用计数器即可。它会精确到计数器上次重置的时间——通常仅在网络设备重新启动时(尽管更频繁的是可能的)。
对一段时间内的带宽进行积分。或者更简单地说,如果您有当月的平均带宽,并将其乘以当月的长度,您将得到总带宽(毫无疑问,会有一些舍入误差)。