插件窝 干货文章 如何进行Linux系统的网络流量监测和分析

如何进行Linux系统的网络流量监测和分析

sudo install bash 流量 223    来源:    2025-04-10

Linux系统网络流量监测与分析指南

作为IT工程师,监测和分析Linux系统的网络流量是日常运维和故障排查的重要工作。以下是几种常用的方法和工具:

1. 基础命令行工具

ifconfig/ip

# 查看网络接口基本信息
ifconfig
# 或使用更现代的ip命令
ip -s link

netstat

# 查看网络连接统计
netstat -s
# 查看各接口流量统计
netstat -i

ss (替代netstat)

# 查看socket统计
ss -s

2. 实时流量监控工具

iftop

# 安装
sudo apt install iftop  # Debian/Ubuntu
sudo yum install iftop # CentOS/RHEL

# 使用
sudo iftop -i eth0

nload

# 安装
sudo apt install nload
sudo yum install nload

# 使用
nload eth0

bmon

# 安装
sudo apt install bmon
sudo yum install bmon

# 使用
bmon

3. 高级流量分析工具

nethogs (按进程统计)

# 安装
sudo apt install nethogs
sudo yum install nethogs

# 使用
sudo nethogs eth0

vnstat (长期流量统计)

# 安装和配置
sudo apt install vnstat
sudo vnstat -u -i eth0
sudo systemctl enable vnstat
sudo systemctl start vnstat

# 查看统计
vnstat -d  # 每日
vnstat -m  # 每月
vnstat -h  # 每小时

iptraf-ng

# 安装
sudo apt install iptraf-ng
sudo yum install iptraf-ng

# 使用
sudo iptraf-ng

4. 数据包捕获与分析

tcpdump

# 捕获eth0接口的流量
sudo tcpdump -i eth0

# 捕获特定主机的流量
sudo tcpdump host 192.168.1.100

# 捕获HTTP流量
sudo tcpdump -i eth0 port 80 -w http.pcap

Wireshark/tshark

# 安装
sudo apt install wireshark tshark
sudo yum install wireshark tshark

# 使用tshark
sudo tshark -i eth0

5. 网络性能测试工具

iperf3

# 在一台机器上启动服务器端
iperf3 -s

# 在另一台机器上测试到服务器的带宽
iperf3 -c server_ip

speedtest-cli

# 安装
pip install speedtest-cli

# 使用
speedtest-cli

6. 可视化监控方案

ntopng

# 安装
sudo apt install ntopng
sudo yum install ntopng

# 配置
sudo systemctl start ntopng
# 然后通过浏览器访问 http://localhost:3000

Grafana + Prometheus + node_exporter

# 安装node_exporter
wget https://github.com/prometheus/node_exporter/releases/download/v*/node_exporter-*.*-amd64.tar.gz
tar xvfz node_exporter-*.*-amd64.tar.gz
cd node_exporter-*.*-amd64
./node_exporter

7. 内核级监控

/proc/net/dev

cat /proc/net/dev

/sys/class/net/

cat /sys/class/net/eth0/statistics/rx_bytes
cat /sys/class/net/eth0/statistics/tx_bytes

8. 自动化监控脚本示例

#!/bin/bash

INTERFACE="eth0"
LOG_FILE="/var/log/network_traffic.log"

while true; do
    RX_BYTES=$(cat /sys/class/net/${INTERFACE}/statistics/rx_bytes)
    TX_BYTES=$(cat /sys/class/net/${INTERFACE}/statistics/tx_bytes)
    TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S")

    echo "${TIMESTAMP} - RX: ${RX_BYTES} bytes | TX: ${TX_BYTES} bytes" >> ${LOG_FILE}
    sleep 5
done

总结

根据不同的需求场景,可以选择合适的工具组合: - 快速查看当前流量:iftop、nload - 按进程查看流量:nethogs - 长期统计:vnstat - 深度分析:tcpdump/Wireshark - 可视化监控:ntopng或Grafana

对于生产环境,建议结合多种工具使用,并设置自动化监控和告警机制。