大佬教程收集整理的这篇文章主要介绍了自定义粒度,snmp流量监控,业务突发可视化,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_772_6@ 1 #! /usr/bin/env python @H_772_6@ 2 #-*-coding:utf-8-*- @H_772_6@ 3 import time,subprocess,re,signal,os,sys @H_772_6@ 4 class traffic: @H_772_6@ 5 def __init__(self,ip,port,community,interval): @H_772_6@ 6 cmd_index = 'snmpwalk -v 2c -c %s %s ifDescr | grep -w %s'%(community,ip,port) @H_772_6@ 7 porTindex = subprocess.Popen(cmd_index,sHell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()[0] @H_772_6@ 8 ret = re.findall('ifDescr.d+',porTindex.decode('utf8'))[0] @H_772_6@ 9 portMIB = int(re.findall('d+',ret)[0]) @H_772_6@10 self.cmd_in='snmpwalk -v 2c -c %s %s ifHCInOctets.%s'%(community,ip,portMIB) @H_772_6@11 self.cmd_out='snmpwalk -v 2c -c %s %s ifHCOutOctets.%s'%(community,ip,portMIB) @H_772_6@12 self.interval = interval @H_772_6@13 def form(self,data): @H_772_6@14 ret = re.findall('Counter64:.*',data.decode('utf8'))[0] @H_772_6@15 ret = ret.split(':')[1].Strip() @H_772_6@16 ret = round(int(ret)*8/1024/1024,2) @H_772_6@17 return ret @H_772_6@18 def snmp(self): @H_772_6@19 traffic_in = subprocess.Popen(self.cmd_in,sHell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()[0] @H_772_6@20 traffic_out = subprocess.Popen(self.cmd_out,sHell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()[0] @H_772_6@21 traffic_in = self.form(traffic_in) @H_772_6@22 traffic_out = self.form(traffic_out) @H_772_6@23 return(traffic_in,traffic_out) @H_772_6@24 def gettraffic(self): @H_772_6@25 befo_in,befo_out = self.snmp() @H_772_6@26 time.sleep(self.interval) @H_772_6@27 after_in,after_out = self.snmp() @H_772_6@28 return ({'in':round((after_in-befo_in)/self.interval,2),'out':round((after_out-befo_out)/self.interval,2)}) @H_772_6@29 def signal_handler(*args, **kwargs): @H_772_6@30 try: @H_772_6@31 if count!=0: @H_772_6@32 print('----------------------------end-----------------------------') @H_772_6@33 print(' min max avg') @H_772_6@34 print('incoming %sM %sM %sM'%(traffic_in_min,traffic_in_max,round(traffic_in_sum/count,2))) @H_772_6@35 print('outgoing %sM %sM %sM'%(traffic_out_min,traffic_out_max,round(traffic_out_sum/count,2))) @H_772_6@36 except: @H_772_6@37 os._exit(0) @H_772_6@38 os._exit(0) @H_772_6@39 if __name__ == "__main__": @H_772_6@40 signal.signal(signal.SIGINT, signal_handler) @H_772_6@41 traffic_in_max = 0 @H_772_6@42 traffic_out_max = 0 @H_772_6@43 traffic_in_min = 999999999999 @H_772_6@44 traffic_out_min = 999999999999 @H_772_6@45 traffic_in_sum = 0 @H_772_6@46 traffic_out_sum = 0 @H_772_6@47 count = 0 @H_772_6@48 try: @H_772_6@49 host = sys.argv[1] @H_772_6@50 port = sys.argv[2] @H_772_6@51 community = sys.argv[3] @H_772_6@52 interval = int(sys.argv[4]) @H_772_6@53 mx =traffic(host,port,community,interval) @H_772_6@54 print('-------------%s %s秒粒度流量监控------------------'%(host,interval)) @H_772_6@55 while True: @H_772_6@56 ret = mx.gettraffic() @H_772_6@57 traffic_in = ret['in'] @H_772_6@58 traffic_out = ret['out'] @H_772_6@59 traffic_in_max = max(traffic_in,traffic_in_maX) @H_772_6@60 traffic_out_max = max(traffic_out,traffic_out_maX) @H_772_6@61 traffic_in_min = min(traffic_in,traffic_in_min) @H_772_6@62 traffic_out_min = min(traffic_out,traffic_out_min) @H_772_6@63 traffic_in_sum += traffic_in @H_772_6@64 traffic_out_sum += traffic_out @H_772_6@65 count+=1 @H_772_6@66 print('traffic_in: %s Mbps'%traffic_in,'traffic_out: %s Mbps'%traffic_out) @H_772_6@67 except: @H_772_6@68 print('usage:') @H_772_6@69 print(' <host> <port> <community> <interval>') @H_772_6@70 print('options:') @H_772_6@71 print(' host: <dest_ip>') @H_772_6@72 print(' portMIB <dest port>') @H_772_6@73 print(' community: <community>') @H_772_6@74 print(' interval: <get data interval>') @H_772_6@75 print('examples:') @H_772_6@76 print(' ./traffic.py 10.0.0.1 ge-0/0/46 public 5')
@H_772_6@ 1 $ ./traffic.py @H_772_6@ 2 usage: @H_772_6@ 3 <host> <port> <community> <interval> @H_772_6@ 4 options: @H_772_6@ 5 host: <dest_ip> @H_772_6@ 6 port <dest port> @H_772_6@ 7 community: <community> @H_772_6@ 8 interval: <get data interval> @H_772_6@ 9 examples: @H_772_6@10 ./traffic.py 10.0.0.1 ge-0/0/46 public 5 @H_772_6@11 @H_772_6@12 @H_772_6@13 $ ./traffic.py 10.0.0.1 ge-0/0/46 public 5 @H_772_6@14 -------------10.0.0.1 5秒粒度流量监控------------------ @H_772_6@15 traffic_in: 7.65 Mbps traffic_out: 42.16 Mbps @H_772_6@16 traffic_in: 14.98 Mbps traffic_out: 51.32 Mbps @H_772_6@17 traffic_in: 13.96 Mbps traffic_out: 51.99 Mbps @H_772_6@18 traffic_in: 8.18 Mbps traffic_out: 44.42 Mbps @H_772_6@19 traffic_in: 8.99 Mbps traffic_out: 53.03 Mbps @H_772_6@20 traffic_in: 17.66 Mbps traffic_out: 49.03 Mbps @H_772_6@21 traffic_in: 47.14 Mbps traffic_out: 49.27 Mbps @H_772_6@22 traffic_in: 71.05 Mbps traffic_out: 50.45 Mbps @H_772_6@23 traffic_in: 72.73 Mbps traffic_out: 48.16 Mbps @H_772_6@24 ^C----------------------------end----------------------------- @H_772_6@25 min max avg @H_772_6@26 incoming 7.65M 72.73M 29.15M @H_772_6@27 outgoing 42.16M 53.03M 48.87M
以上是大佬教程为你收集整理的自定义粒度,snmp流量监控,业务突发可视化全部内容,希望文章能够帮你解决自定义粒度,snmp流量监控,业务突发可视化所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。