Superfast parallel snmpbulkwalk
Fastsnmpy is a module that leverages python-extensions that come with net-snmp and provide highly parallelized faster-methods to walk oid-trees on devices.
In addition, it provides a method to bulkwalk mib-trees..
BulkWalk methods are missing from native python-bindings for net-snmp. By creating a wrapper around the GetBulk method instead, and maintaining state while traversing the oid-tree, fastsnmpy provides a clever solution to bulkwalk oids much faster
FastSNMPy provides the following:
- snmpwalk(): Native python-bindings distributed with net-snmp, combined with fastsnmpy’s ability to parallelize snmpwalk operations.
- snmpbulkwalk(): Ability to snmpbulkwalk devices, which makes it several magnitudes faster than net-snmp’s implementation of snmpwalk.
- By leveraging the getbulk method, this module provides a quick snmpbulkwalk utility.
- PROCESS-POOLS: By passing in a ‘workers=n’ attribute to the above methods, fastsnmpy can instantiate a process-pool to parallelize the snmpwalk and snmpbulkwalk methods, resulting in several devices being walked at the same time, effectively using all cores on a multicore machine.
- One-Line, and Two-Line scripts that enable you to discover/walk all devices in a whole datacenter
Quick example – Running in interactive mode
<blockquote>
>> import netsnmp
>> from fastsnmpy import SnmpSession
>> hosts =['c7200-2','c7200-1','c2600-1','c2600-2']
>> oids = ['ifDescr', 'ifIndex', 'ifName', 'ifDescr']
>> newsession = SnmpSession ( targets = hosts, oidlist = oids, community='oznet' )
>> results = newsession.snmpbulkwalk(workers=15)
>> len(results)
171031
>>
Note: To use the module in scripts, please see the example.py included with the package.
Benchmarks
(1) Walking 30 nodes for ifDescr using snmpwalk():
real 0m18.63s
user 0m1.07s
sys 0m0.38s
(2) Walking 30 nodes for ifDescr using snmpbulkwalk():
real 0m9.17s
user 0m0.48s
sys 0m0.11s
(3) Walking 30 nodes for ifDescr using snmpwalk(workers=10):
real 0m2.27s
user 0m2.87s
sys 0m0.66s
(4) Walking 30 nodes for ifDescr using snmpbulkwalk(workers=10):
real 0m0.90s
user 0m2.44s
sys 0m0.40s
As you can see, fastsnmpy’s bulkwalk mode is almost 20 times faster than using python’s native snmp bindings for walking
Latest-version: Fastsnmpy2-1.2.1
Download Here
Get from Git
Or fork from the git-repo GitHub-FastSNMPy