基于python的网络流量监控

一、目的

        分析最近一段时间内的网络流量情况,以便更好地理解网络使用情况、识别潜在问题并提出改进建议。网络流量监控对于保障网络稳定性、优化资源分配和提高性能具有重要意义。

二、监控指标

        2.1 接收速率

        接收速率是指单位时间内接收数据的速度,通常以 Mbps(兆位每秒)或 KB/s(千字节每秒)表示。

        2.2 发送速率

        发送速率是指单位时间内发送数据的速度,通常以 Mbps(兆位每秒)或 KB/s(千字节每秒)表示。

        2.3 吞吐量

        吞吐量是指网络传输数据的总量,通常以 Mbps(兆位每秒)或 GB(千兆字节)为单位。

        2.4 丢包率

        丢包率是指在传输过程中丢失的数据包的比例,通常以百分比或千分比表示。

当然也根据自己的需求获取更加精准的数据,以便更好知道自己电脑的网络是否安全。

三、实验环境

 操作系统:kali Linux z 6.5.0-kali3-amd64

语言版本:Python 3.11.8 (main, Feb  7 2024, 21:52:08) [GCC 13.2.0] on linux

四、功能实现

        具体的思路如下:

        1. 必要用到的库:我们使用psutil库来获取网络流量和系统信息,使用imet库来计算时间间隔。

        2. 设置初始值:记录开始时间、初始接收字节数、初始发送字节数以及初始丢包数。

        3. 进入监控循环:使用`while True`进入一个无限循环,每次循环都会执行以下步骤:

          休眠一段时间:使用`time.sleep(interval)`来控制每次循环之间的时间间隔。

          获取当前的网络流量情况:使用`psutil.net_io_counters()`来获取当前的网络输入输出计数器。

          计算流量指标:计算从开始时间到当前时间的时间间隔,然后根据时间间隔计算接收速率、发送速率和吞吐量。同时,计算丢包率(100个包)。

          打印监控指标:使用`print`函数打印出接收速率、发送速率、吞吐量和丢包率。

           更新初始值:将当前的接收字节数、发送字节数和丢包数更新为下一次循环的初始值。

4. 主程序入口:使用monitor_network_traffic()来确保脚本在直接运行时才执行监控函数。

 

#安装pip pip是安装python的第三方库 
apt-get install python3-pip
pip install psutil   //安装第三方库

具体代码 : 
   import psutil
   import time

def monitor_network_traffic(interval=1):
    start_time = time.time()
    start_io = psutil.net_io_counters()
    start_rx = start_io.bytes_recv
    start_tx = start_io.bytes_sent
    start_drop = start_io.dropin  # 接收端的丢包数

    while True:
        time.sleep(interval)

        end_io = psutil.net_io_counters()
        end_rx = end_io.bytes_recv
        end_tx = end_io.bytes_sent
        end_drop = end_io.dropin  # 接收端的丢包数

        duration = time.time() - start_time
        rx_speed = (end_rx - start_rx) / duration
        tx_speed = (end_tx - start_tx) / duration
        packet_loss = (end_drop - start_drop) / 100  # 丢包率(100包)

        print(f"每秒接收速率: {rx_speed:.2f} bytes/s")
        print(f"每秒发送速率: {tx_speed:.2f} bytes/s")
        print(f"吞吐量: {(rx_speed + tx_speed):.2f} bytes/s")
        print(f"丢包率(100包): {packet_loss:.2%}")

        start_rx = end_rx
        start_tx = end_tx
        start_drop = end_drop
monitor_network_traffic()

五、总结

        网络流量监控对于维护网络稳定性、提高性能和优化资源分配具有重要意义。定期进行网络流量监控,并根据监控结果进行相应的优化和调整,以确保网络的高效运行

  • 30
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值