运维大师教你使用流量监控神器nethogs分析Linux进程网络流量

412 阅读4分钟

image.png

一、简介

Nethogs 是一款专为进程级网络流量监控设计的开源工具,其核心优势在于按进程而非协议或子网统计带宽使用情况。与传统工具(如 iftopnetstat)不同,Nethogs 可直接定位消耗带宽的具体进程,无需依赖特殊内核模块。它通过实时监测网络接口,帮助用户快速发现异常流量源,例如某进程突发性占用大量带宽的情况。


二、安装方法

Nethogs 支持主流 Linux 发行版,通过包管理器即可快速安装:

  • Debian/Ubuntu
    sudo apt-get install nethogs  
    
  • Fedora
    sudo dnf install nethogs  
    
  • Arch Linux
    sudo pacman -S nethogs  
    
  • CentOS/RHEL
    sudo yum install nethogs  # 或使用 EPEL 源  
    

注意:部分系统需手动添加仓库,具体参考项目文档。


三、基础用法与界面解析

  1. 启动监控
    默认启动命令为:

    sudo nethogs  
    

    需管理员权限,否则可能无法显示所有进程

image.png

输出界面包含以下核心字段:

*   **PID**:进程ID
*   **USER**:运行用户
*   **PROGRAM**:进程名或路径
*   **SENT**:累计发送流量
*   **RECEIVED**:累计接收流量
*   **TOTAL**:总流量(发送+接收)

2. 指定网络接口
监控特定接口(如 eth0): bash sudo nethogs eth0 使用 -a 参数可包含环回接口(lo): bash sudo nethogs -a

  1. 交互式操作
    • q:退出
    • s/r:按发送/接收流量排序
    • m:切换流量单位(B/KB/MB)

四、高级功能与参数详解

Nethogs 提供多项参数实现精细化控制:

参数功能示例
-d <秒>设置刷新间隔,默认 1sudo nethogs -d 5 (每5秒刷新)
-c <次数>运行指定次数后退出sudo nethogs -c 3 (执行3次后退出)
-v <模式>设置流量单位模式:
0=KB/s(默认)
1=总KB
2=总B
3=总MB
sudo nethogs -v 3 (以MB显示总流量)
-t追踪模式,输出单列数据便于日志记录sudo nethogs -t >> /var/log/network.log
-p监听混杂模式(需谨慎,仅限测试)sudo nethogs -p eth0
-s启用静默模式,仅显示统计信息(与 -t 组合使用)sudo nethogs -t -s

组合示例:每10秒监控 enp1s0 接口3次并记录到日志:

sudo nethogs -t -d 10 -c 3 enp1s0 >> nethogs.log  

五、实战应用

  1. 快速排查网络拥堵
    当网速异常时,运行 sudo nethogs 立即定位占用带宽的PID。例如,发现 PID=1234 持续上传高流量,可通过 ps -ef | grep 1234 确认进程详情并终止异常任务[2][4]。

  2. 带宽优化配置
    长期监控可识别非必要进程。例如,观察到某后台程序(如同步工具)在深夜持续下载,可调整其调度时间以避免影响白天业务[4]。

  3. 安全监控
    突然出现的高流量进程可能暗示恶意活动。结合日志分析工具(如 awk)定位异常:

    # 提取高流量进程  
    awk '{print $1,$2,$7}' nethogs.log | sort -nrk 3 | head  
    

六、与同类工具对比

工具特性适用场景
Nethogs进程级监控
无需内核模块
实时交互
定位进程级带宽使用
iftop流量按协议/子网统计实时流量分布分析
netstat网络连接状态查看端口、连接数统计
nload网卡级实时带宽统计单一网卡性能监控

选择Nethogs的核心原因是其精确到进程的带宽分组能力,弥补了其他工具的空白。


七、常见问题解答(FAQ)

  • Q1:为什么需要sudo权限?
    Nethogs需访问底层网络接口信息,普通用户权限受限。

  • Q2:如何显示完整进程路径?
    默认显示的是进程名,需通过 -p 参数(部分版本可能不支持)或直接查看PROGRAM列的路径信息。

  • Q3:监控不到网卡流量怎么办?
    确保网卡名称正确(使用 ip a 查看),或尝试-a参数包含所有接口。此外,容器或虚拟机可能需要权限调整。

  • Q4:如何自动化监控?
    结合脚本周期运行:

    # 每小时记录一次流量数据  
    while true; do sudo nethogs -t -d 3600 >> /var/log/nethogs_hourly.log; done  
    

八、总结

Nethogs 凭借进程级带宽监控无内核依赖的优势,成为排查网络问题的利器。无论是快速定位异常进程,还是长期优化资源分配,其丰富的参数和扩展性均能满足需求。对于管理员而言,掌握 Nethogs 的高级选项(如自动化日志与可视化集成)将进一步提升运维效率。