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

代码如下:

#!/usr/bin/env pythonimport sys,timefrom socket import socketdef 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 diccarbon_server = ‘127.0.0.1’carbon_port = 2003delay = 3sock = 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 message\n” print ‘-‘ * 80 print message sock.sendall(message) time.sleep(delay)

Posted in 未分类

发表评论