1

我正在运行一个应用程序,该应用程序每 5 分钟从 2000 多个交换机收集 snmp 数据、upoctets、downoctects、端口状态,并将它们显示在图表中,并根据端口状态在网页上以绿色或红色显示它们,这是我第一次添加设备我遍历它获取端口索引将其保存到 db,每五分钟我从 db 获取端口索引针对 oid 运行它执行 snmpget 逐个端口获取数据并将它们保存到 mysql。

几乎有 8 个 oid 和 2000 多个设备,串行需要更长的时间,直到最后一个 oid 完成才执行下一个 oid。我听说过 snmpbulkget 或 snmptable 但不了解它们,

我想要一种替代方法,我可以减少网络流量并批量获取表的数据,而不是我为每个 oid 一个一个地执行查询 snmpget,这通常会执行五分钟的差异。

我向交换机发送一个表请求,它返回所有端口状态的值表。

它将减少等待下一个呼叫并加快进程也将减少网络流量。

可能吗?

您能否对我的 senario 进行改进,因为许多接口计数器每 5 分钟查询数千个设备。

谢谢

4

1 回答 1

0

SNMP getbulk 命令允许您指定多个 OID 和一个 maxrepetitions 参数,该参数限制代理在回复中发送的 varbind 数量。它非常适合在您描述的情况下优化性能。当然有一个问题:

  • SNMP getbulk 在 SNMP v1 中不可用
  • 设置正确的 maxrepetitions 参数可能很棘手 - 如果必须在回复中包含一定数量的 varbind,一些代理会拒绝发送回复
于 2013-04-24T15:19:31.007 回答