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


Posted in Python onApril 27, 2014
#!/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 message\n"
    print '-' * 80
    print message
    sock.sendall(message)
    time.sleep(delay)
Python 相关文章推荐
python多进程操作实例
Nov 21 Python
Python中使用gzip模块压缩文件的简单教程
Apr 08 Python
Python基于有道实现英汉字典功能
Jul 25 Python
python如何派生内置不可变类型并修改实例化行为
Mar 21 Python
对PyTorch torch.stack的实例讲解
Jul 30 Python
对python创建及引用动态变量名的示例讲解
Nov 10 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
Nov 10 Python
对Python3 goto 语句的使用方法详解
Feb 16 Python
让你的Python代码实现类型提示功能
Nov 19 Python
python实现梯度下降和逻辑回归
Mar 24 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
Apr 09 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
Apr 25 Python
python抓取网页图片示例(python爬虫)
Apr 27 #Python
python实现sublime3的less编译插件示例
Apr 27 #Python
python中的实例方法、静态方法、类方法、类变量和实例变量浅析
Apr 26 #Python
Python设计模式之单例模式实例
Apr 26 #Python
Python设计模式之观察者模式实例
Apr 26 #Python
Python设计模式之代理模式实例
Apr 26 #Python
python中的列表推导浅析
Apr 26 #Python
You might like
mysql 搜索之简单应用
2007/04/27 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
2014/07/28 PHP
php商品对比功能代码分享
2015/09/24 PHP
PHP+Oracle本地开发环境搭建方法详解
2019/04/01 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
2019/10/01 PHP
javaScript call 函数的用法说明
2010/04/09 Javascript
Javascript监视变量变化的方法
2015/06/09 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
2016/05/12 Javascript
轻松实现jQuery添加删除按钮Click事件
2017/03/13 Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
2017/04/22 Javascript
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
layui实现给某一列加点击事件
2019/10/26 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
TypeScript高级用法的知识点汇总
2019/12/17 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
2020/05/29 jQuery
python简单实现基于SSL的IRC bot实例
2015/06/15 Python
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
python输入错误密码用户锁定实现方法
2017/11/27 Python
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
2020/05/18 Python
Visual Studio Code搭建django项目的方法步骤
2020/09/17 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
2021/01/28 Python
澳大利亚百货商店中销量第一的商务衬衫品牌:Van Heusen
2018/07/26 全球购物
PHP开发的一般流程
2013/08/13 面试题
飞利信loadrunner和软件测试笔试题
2012/09/22 面试题
毕业生求职自荐信怎么写
2014/01/08 职场文书
自我鉴定怎么写
2014/01/12 职场文书
公务员转正鉴定材料
2014/02/11 职场文书
机关职员工作检讨书
2014/10/23 职场文书
土地租赁协议书
2015/01/29 职场文书
新教师2015年度工作总结
2015/07/22 职场文书
简历中的自我评价怎么写呢?
2019/04/30 职场文书
2019终止劳动合同协议书最新范本!
2019/07/09 职场文书
mysq启动失败问题及场景分析
2021/07/15 MySQL
安装Ruby和 Rails的详细步骤
2022/04/19 Ruby