python脚本调用iftop 统计业务应用流量
off999 2024-11-02 12:24 30 浏览 0 评论
因公司服务器上部署应用较多,在有大并发访问、业务逻辑有问题的情况下反复互相调用或者有异常流量访问的时候,需要对业务应用进行故障定位,所以利用python调用iftop命令来获取应用进程流量,结合zabbix,可帮助定位分析问题。,以下是脚本内容,大概思路是:
- 利用iftop命令 iftop -t -P -N -n -s 2 来获取流量信息
- 对获取的流量信息进行处理,单位换算,同一个应用程序的所有链接流量进行合计(因为一个应用会有很多链接,每一个链接都有流量,全部相加即可得出这个应用的总流量)
#!/usr/bin/python
#coding=utf-8
#针对业务监听的端口流量进行统计,忽略对随机端口流量统计
#若针对突然流量增大,找到其进程进行告警,可以不做统计,获取到流量进行判断,若大于多少阀值,则输出
import os
def change_unit(unit):
if "Mb" in unit:
flow = float(unit.strip("Mb")) * 1024
return flow
elif "Kb" in unit:
flow = float(unit.strip("Kb"))
return flow
elif "b" in unit:
flow = float(unit.strip("b")) / 1024
return flow
def get_flow():
#iftop参数:-t 使用不带ncurses的文本界面,-P显示主机以及端口信息,-N只显示连接端口号,不显示端口对应的服务名称,-n 将输出的主机信息都通过IP显示,不进行DNS解析,-s num num秒后打印一次文本输出然后退出
mes = os.popen("iftop -t -P -N -n -s 2 2>/dev/null |grep -A 1 -E '^ [0-9]'").read()
#以换行符进行分割
iftop_list = mes.split("\n")
count = len(iftop_list)
#定义字典 存放主机信息和进出流量
flow_dict = {}
#定义列表,存放主机信息
host_ips = []
# 把主机加入数组,新的主机查询是否在列表里面,没有的话,把主机信息加入host_ips,并新组装一个字典值加入flow_dict字典,如果host_ips存在主机信息,则把字典值取出来,重新计算增加流量数值,再加入字典flow_dict
#这里的 count/2 是iftop获取到的数据,是进出流量为一组,则有count/2 个流量连接,可执行os.popen 里面的iftop命令即可明白
for i in range(count/2):
flow_msg = ""
#获取发送的ip地址(本地ip地址),端口(本地端口),发送的流量,以换行符分割后,数据偶数位为本地发送流量信息
location_li_s = iftop_list[i*2]
send_flow_lists = location_li_s.split(" ")
#去空元素
while '' in send_flow_lists:
send_flow_lists.remove('')
host_ip = send_flow_lists[1]
send_flow = send_flow_lists[3]
send_flow_float = change_unit(send_flow)
#print send_flow_lists
#获取接收的流量
location_li_r = iftop_list[i*2+1]
rec_flow_lists = location_li_r.split(" ")
while '' in rec_flow_lists:
rec_flow_lists.remove('')
rec_flow = rec_flow_lists[3]
rec_flow_float = change_unit(rec_flow)
#去掉本地linux 大于10000的随机端口,因为公司业务应用无大于10000,也可把这里去掉
port = host_ip.split(":")[1]
if int(port) < 10000:
#主机信息若不存在列表则加入host_ips,若存在,则字典取值,对进出流量进行相加
if host_ip not in host_ips:
host_ips.append(host_ip)
flow_msg = str(float('%2.f' % send_flow_float)) + ":" + str(float('%.2f' % rec_flow_float))
flow_dict[host_ip]=flow_msg
else:
flow_dict_msg = flow_dict[host_ip]
flow_dict_msg_li = flow_dict_msg.split(":")
#获取字典里的发送接收流量
flow_dict_msg_send = float(flow_dict_msg_li[0])
flow_dict_msg_rec = float(flow_dict_msg_li[1])
#字典里面的发送接收流量和获取到的新流量相加
flow_add_send = flow_dict_msg_send + send_flow_float
flow_add_rec = flow_dict_msg_rec + rec_flow_float
#把新得出的结果,更新到字典
flow_msg = str(float('%.2f' % flow_add_send)) + ":" + str(float('%.2f' % flow_add_rec))
flow_dict[host_ip]=flow_msg
for key in flow_dict:
flow_li = flow_dict[key].split(":")
#flow_li[0]为发送流量,flow_li[1]为接收流量
print key + "|" + flow_li[0] + "|" + flow_li[1]
get_flow()
相关推荐
- 音乐剪辑软件免费版(音乐剪辑用什么免费软件)
-
CoolEditPro2.0或2.1CoolEditPro是一款既能支持声音录制,也能支持声音编辑与合成的多功能软件,利用这样的软件,你可以将自己满意的歌声或者喜欢的歌曲录制下来。该软件支持从多种声音...
-
- wifi密码查看密码器下载(wifi密码查看密码器下载官方)
-
在手机的应用商店里,然后找到万能钥匙,点击下载。下载完成后直接安装在桌面上就可以了。在你电话应用里面下载万能钥匙,就自动会出现在桌面上了感觉WiFi共享精灵最好用,WiFi共享精灵是一款电脑搭建免费wifi热点必备软件,电脑安装,一键...
-
2026-01-18 22:43 off999
- 畅读小说免费版(畅读小说在线)
-
1.如果你购买京东plus会员,京东阅读里的畅读书籍就可以免费看了。2.也可以下载得到?这个软件,也有比较多的书籍可以免费看。番茄的畅读卡是指在番茄读书app里设置的一种功能,用于提供会员用户更加畅快...
- 云课堂智慧教学平台(云课堂智慧教学平台app下载)
-
打开电脑版云课堂在课程中心里面找到课程然后点开按开课班级里面有个退班点击就可以退出了,然后重新选课吧要更改云课堂智慧职教的身份,您可以按照以下步骤操作:1.打开云课堂智慧职教网站或者手机应...
- 起名(起名字2025免费八字起名周易)
-
八笔:宝,果,欣,明,怡,英,林,苗,青,茉五笔:玉,兰,仙,白,乐,禾,可,冬个人意见:欣兰1.取名排辈分的规则字辈是中国起名基本要素,一般情况是名字的第一个字是姓氏,第二个字是辈分,第三个字是名...
- 视频转换大师(视频格式转换在线)
-
你要去掉屏幕上的字你可以按软件的指导交了费自然就会去掉屏幕上的字串了,因为现在是试用软件只是给你试用的,你买了就好了
- 网络监控系统(网络监控系统原理图)
-
那得看监控方式和网络环境。一、本地监控,即与摄像头有线连接本地使用电脑或录像机监控,是可以不接路由器的。可以通过交换机或录像机进行监控。二、远程监控,这种方式需要,摄像头和监控端都接入互联网。而现在大...
- 免费小说阅读器哪个好(好用又免费的小说阅读器)
-
你好,你要在手机上面看的话,推荐追书神器和小书亭,这两个都有全网搜索和换源功能,所以是免费阅读小说,免费下载小说的如果是要在电脑上面的话,可以用书荒阅读器,天天阅读器,还有鹰爪阅读器,有免费阅读和下载...
- 星星动漫网(星辰影院)
-
星蝶公主。《星蝶公主》(英语:Starvs.theForcesofEvil)是迪士尼电视动画制作的美国动画电视喜剧。该系列于2015年1月18日在迪士尼频道首映,并将于2015年3月30日在...
- 股票软件下载大全(股票软件下载大全官网)
-
股票APP要指标齐全,自选股方便,看行情方便,可以用益盟操盘手、国泰君安,看具体指标、筹码分布比较方便,有看主力资金流入情况的指标。也可以用招商证券,筹码分布更清楚,主力流入、封板时间、封涨大减指示比...
-
- 使命召唤2手机版下载(使命召唤2免费下载)
-
步骤/方式1首先进入STEAM主页界面,点击【游戏中心】。步骤/方式2在游戏中心的搜索栏,搜索【使命召唤】。步骤/方式3搜索完毕后,在下方选择【使命召唤19(战区2)】。步骤/方式4在使命召唤19:战区2主页中,点击【下载客户端】即可。...
-
2026-01-18 20:03 off999
-
- 下载电影的软件(下载电影软件排行榜前十名)
-
果断PPTV的VIP破解版本,不要升级,享受vip无限制下载,文件在pptv下download文件夹中,如果出现乱码可以对照电影时间修改名字,另推荐一个电影播放器,mxplayer,手势操作,不再需要点很多次才能把电影拖到想要的位置,请楼主...
-
2026-01-18 19:51 off999
- 最火手游排行榜2025(最火手游排行榜2020歌曲)
-
1、艾尔文:艾尔文是游戏中公认的最强角色,这方面毋庸置疑,强大的属性以及实用性。2.利昂:天赋是每移动一格就可以增加百分5的攻击力,防御力可以提升百分10,攻击之后还有一次全新移动的机会,拥有强大的移...
- 网络电视在线观看高清(网络电视在线电视直播大全)
-
如果网站已建好,可以嵌套一些现成的加密sdk小程序,实现对视频的保护,防止下载、恶意传播、播放等;1做防盗链处理,防止下载;2视频加密sdk,对视频本身进行加密处理,即使被下载,也无法播放!;3...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
Python 批量卸载关联包 pip-autoremove
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
