zl程序教程

您现在的位置是:首页 >  后端

当前栏目

python监控网卡流量并使用graphite绘图的示例

Python监控网卡 使用 示例 流量 绘图
2023-06-13 09:15:25 时间

复制代码代码如下:


#!/usr/bin/envpython
importsys,time
fromsocketimportsocket
defread_interface(in_file):
   withfile(in_file)asf:
       returnf.readlines()[2:]
defset_interface(inter_msg):
   dic={}
   foriinxrange(len(inter_msg)):
       dic[inter_msg[i].split(":")[0].strip()]={"in":inter_msg[i].split(":")[1].strip().split()[0],"out":inter_msg[i].split(":")[1].strip().split()[8]}
   returndic
CARBON_SERVER="127.0.0.1"
CARBON_PORT=2003
delay=3
sock=socket()
try:
   sock.connect((CARBON_SERVER,CARBON_PORT))
except:
   print"Couldn"tconnectto%(server)sonport%(port)d,iscarbon-agent.pyrunning?"%{"server":CARBON_SERVER,"port":CARBON_PORT}
   sys.exit(1)
whileTrue:
   now=int(time.time())
   lines=[]
   int1=read_interface("/proc/net/dev")
   inter_dic1=set_interface(int1)
   time.sleep(1)
   int2=read_interface("/proc/net/dev")
   inter_dic2=set_interface(int2)
   printint(inter_dic2[inter_dic2.keys()[1]]["in"]),int(inter_dic1[inter_dic1.keys()[1]]["in"])
   foriinxrange(len(inter_dic1.keys())):
       lines.append("interface.%s_in%s%d"%(inter_dic1.keys()[i],int(inter_dic2[inter_dic2.keys()[i]]["in"])-int(inter_dic1[inter_dic1.keys()[i]]["in"]),now))
       lines.append("interface.%s_out%s%d"%(inter_dic1.keys()[i],int(inter_dic2[inter_dic2.keys()[i]]["out"])-int(inter_dic1[inter_dic1.keys()[i]]["out"]),now))
   message="\n".join(lines)+"\n"
   print"sendingmessage\n"
   print"-"*80
   printmessage
   sock.sendall(message)
   time.sleep(delay)