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