详解python并发获取snmp信息及性能测试_第1页
详解python并发获取snmp信息及性能测试_第2页
详解python并发获取snmp信息及性能测试_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、详解pythons发获取snmp信息及性能测试python&snmp用python取snmp言息有多个现成的库可以使用,其中比较常用的是ntsnmi和pysnmp两个库。网上有较多的关于两个库的例子。本文重点在于如何并发的获取snmp的数据,即同时获取多台机器的snmp言息。netsnmp先说ntsnmppythor的ntsnmp其实是来自于ntsn包ppython通过一个文件调用ntsn的接口获取数据。因此,在并发获取多台机器的时候,不能够使用协程获取。因为使用协程,在数据的时候,协程会一直等待ntsnmp!返回数据,而不会像so使用时那样在等待数据时把切换给其他协程使用。从这点上来说,使用

2、协程和串行获取没有区别。那么如何解决并发获取的问题呢?可以使用线程,多线程获取当然也可以使用多进程。多个线程同时调用ntsn的接口获取数据,然后p在多个线程之间不停切换。当一个线程获取一个结果后,可以继续调用接口获取下一个snmp数据。这里我写了一个样例程序。首先把所有的host和o做成任务放到队列里,然后启动多个线程,去执行获取任务。程序样例如下:mpotthnimporttimempotntsnmpmpotstttmtmtmhostsmy把host和o组成任务ohostinhosts:foroidinoidsmyq.pthostoefpoll_one_host()whiletry:死循环从

3、队列中获取任务,直到队列任务为空host,oimyt(block=False)sessionntsnmpession(sonstosthostommntyststntsnmpist()st.append(netsnmp.Varbind(oidret=session.get(ist)pt(host,oid,t(time.time(stttmptmptythread_arr=#开启多线程num_thread=50foriinrange(num_thread):t=threading.Thread(target=poll_one_host,kwargs=)t.setDaemon(True)t.sta

4、rt()thread_arr.append(t)#等待任务执行完毕foriinrange(num_thread):thread_arri.join()whileTrue:try:info=rq.get(block=False)printinfoexceptQueue.Empty:printtime.time()-start_timebreaknetsnmp除了支持get操作之外,还支持walk操作,即遍历某个oid。但是walk使用的时候需要谨慎,以免导致高延时等问题,具体可以参见之前的一篇jnmpwalk高延时问题分析的博客。pysnmppysnmp是用python实现的一套snmp协议的库

5、。其自身提供了对于异步的支持。importtimeimportQueuefrompysnmp.hlapi.asyncoreimport*t=time.time()myq=Queue.Queue()#回调函数。在有数据返回时触发defcbFun(snmpEngine,sendRequestHandle,errorIndication,errorStatus,errorIndex,varBinds,cbCtx):myq.put(time.time()-t,varBinds)hosts=192.20.150.109,192.20.150.110,192.20.150.111,192.20.150.1

6、12,192.20.150.113,192.20.150.114,192.20.150.115,192.20.150.116,192.20.150.117,192.20.150.118,192.20.150.119,192.20.150.120,192.20.150.121,192.20.80.148,192.20.80.149,192.20.96.59,192.20.82.14,192.20.82.15,192.20.82.17,192.20.82.19,192.20.82.12,192.20.80.139,192.20.80.137,192.20.80.136,192.20.80.134,

7、192.20.80.133,192.20.80.131,192.20.80.130,192.20.81.141,192.20.81.140,192.20.82.26,192.20.82.28,192.20.82.23,192.20.82.21,192.20.80.128,192.20.80.127,192.20.80.122,192.20.81.159,192.20.80.121,192.20.80.124,192.20.81.151,192.20.80.118,192.20.80.119,192.20.80.113,192.20.80.112,192.20.80.116,192.20.80.

8、115,192.20.78.62,192.20.81.124,192.20.81.125,192.20.81.122,192.20.81.121,192.20.82.33,192.20.82.31,192.20.82.32,192.20.82.30,192.20.81.128,192.20.82.39,192.20.82.37,192.20.82.35,192.20.81.130,192.20.80.200,192.20.81.136,192.20.81.137,192.20.81.131,192.20.81.133,192.20.81.134,192.20.82.43,192.20.82.4

9、5,192.20.82.41,192.20.79.152,192.20.79.155,192.20.79.154,192.25.76.235,192.25.76.234,192.25.76.233,192.25.76.232,192.25.76.231,192.25.76.228,192.25.20.96,192.25.20.95,192.25.20.94,192.25.20.93,192.24.163.14,192.24.163.21,192.24.163.29,192.24.163.6,192.18.136.22,192.18.136.23,192.24.193.2,192.24.193.

10、19,192.24.193.18,192.24.193.11,192.20.157.132,192.20.157.133,192.24.212.232,192.24.212.231,192.24.212.230oids=.1.3.6.1.4.1.2021.11.9.0,.1.3.6.1.4.1.2021.11.10.0,.1.3.6.1.4.1.2021.11.11.0,.1.3.6.1.4.1.2021.10.1.3.1,.1.3.6.1.4.1.2021.10.1.3.2,.1.3.6.1.4.1.2021.10.1.3.3,.1.3.6.1.4.1.2021.4.6.0,.1.3.6.1

11、.4.1.2021.4.14.0,.1.3.6.1.4.1.2021.4.15.0snmpEngine=SnmpEngine()#添加任务foroidinoids:forhinhosts:getCmd(snmpEngine,CommunityData(cluster),UdpTransportTarget(h,161),timeout=3,retries=0,),ContextData(),ObjectType(ObjectIdentity(oid),cbFun=cbFun)time1=time.time()-t#执行异步获取snmpsnmpEngine.transportDispatcher.runDispatcher()打印结果eue:e(cse)eceeeeee()es本身只支持最基础的e和e命令,因此如果想使用,需要自己进行实现。性能测试在同一个环境下,对两者进行了性能测试。两者对个s个进行釆集。测试组耗时(sec)es线程)es线程)es线程)pysnmp4.812可以看到es的釆集速度跟线程数有关。当线程数增大到一定程度,釆集时间不再缩短。因为开辟线程同样会消耗时间。而已有的线程已经足够处理。s性能较之略差一下。详细分析s在添加任务(执行e时)消耗了约,之后的釆集约消耗秒。在增加了数,在进行实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论