![MRTG:交换机端口吞吐量](https://linux22.com/image/1310856/MRTG%EF%BC%9A%E4%BA%A4%E6%8D%A2%E6%9C%BA%E7%AB%AF%E5%8F%A3%E5%90%9E%E5%90%90%E9%87%8F.png)
我目前在 Debian 机器上运行 MRTG。它目前轮询 Netgear Switch 的 7 个左右端口的速度,然后绘制它们的图表。它目前只记录比特/秒。我想设置 MRTG 来记录和显示通过端口的数据总量,而不仅仅是速度。
我对 MIBS 和 SNMP 还不太熟悉,所以需要一些帮助。交换机是 Netgear GS748AT,我不太清楚在哪里可以找到它的 MIBS,也不太清楚我需要哪些 MIBS 来完成我的任务。
非常感谢您的帮助!
答案1
恐怕 MRTG 并非按照您所建议的方式设计,甚至无法跟踪累积计数器。虽然它确实查询每个轮询的端口流量的绝对值,但它使用两个值之间的差值来计算有界速率,并将其绘制成图表。此外,由于 MRTG 日志文件的大小不会随时间增长,因此它们的准确性必须降低:它从轮询中收到的绝对值和它计算的增量开始精度下降;这不会为您提供随时间推移的准确计数。由于大多数低端消费设备仅实现 SNMP V1.0,因此其计数器只有 32 位:它们在 65536^2 个八位字节或大约 4.3 GB 的数据后翻转。这也是问题的根源。MRTG 有代码来帮助它在翻转和设备/端口重置之间保持合理的增量,但它没有,也无法保持发送的所有数据包的绝对计数。
在任何给定时间,snmpget
都可用于轮询接口或接口组的绝对数字。在下面的示例中,我已确定(通过仔细阅读 的输出snmpwalk
)我的 dslmodem 的 WiFi 接口编号为 9,因此我可以通过以下方式获取其当前绝对统计信息:
[mini-nevie:~] nevinwilliams% snmpget -c public -v1 192.168.2.1 .sysUpTimeInstance .ifLastChange.9 .ifInOctets.9 .ifOutOctets.9
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (187184300) 21 days, 15:57:23.00
IF-MIB::ifLastChange.9 = Timeticks: (2500757) 6:56:47.57
IF-MIB::ifInOctets.9 = Counter32: 824681152
IF-MIB::ifOutOctets.9 = Counter32: 317952735
它告诉我(虽然我不确定是 21 天还是 7 小时;我认为是前者,因为它不常用)我的 WiFi 接口传输了 1.1 GB 的数据。(我已经重新启动了我的 DSL 调制解调器)
查看绝对计数器的另一种方法是使用以下命令snmpstatus
:
[mini-nevie:~] nevinwilliams% snmpstatus -c public 192.168.2.1 [UDP: [192.168.2.1]:161->[0.0.0.0]:0]=>[西门子用户网络 6520 系列 (E752)] 启动:0:25:25.00 接口:22,接收/传输数据包:16230/28039 | IP:5530/1696 5 个接口已关闭!
如您所见,它提供了更简洁的格式。但是,这样的数据无法很好地绘制成图表。