python监控网卡流量并使用graphite绘图的示例_python教程-查字典教程网
python监控网卡流量并使用graphite绘图的示例
python监控网卡流量并使用graphite绘图的示例
发布时间:2016-12-28 来源:查字典编辑
摘要:复制代码代码如下:#!/usr/bin/envpythonimportsys,timefromsocketimportsocketdefre...

复制代码 代码如下:

#!/usr/bin/env python

import sys,time

from socket import socket

def read_interface(in_file):

with file(in_file) as f:

return f.readlines()[2:]

def set_interface(inter_msg):

dic={}

for i in xrange(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]}

return dic

CARBON_SERVER = '127.0.0.1'

CARBON_PORT = 2003

delay = 3

sock = socket()

try:

sock.connect( (CARBON_SERVER,CARBON_PORT) )

except:

print "Couldn't connect to %(server)s on port %(port)d, is carbon-agent.py running?" % { 'server':CARBON_SERVER, 'port':CARBON_PORT }

sys.exit(1)

while True:

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)

print int(inter_dic2[inter_dic2.keys()[1]]["in"]),int(inter_dic1[inter_dic1.keys()[1]]["in"])

for i in xrange(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 "sending messagen"

print '-' * 80

print message

sock.sendall(message)

time.sleep(delay)

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新python学习
    热门python学习
    脚本专栏子分类