Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 伺服器網卡流量監控全方案:iftop 即時視覺化、ifconfig 統計差值腳本、SNMP 長期圖表

編輯:Linux 教學

Linux 原生無圖形化流量儀表板,運維需組合工具實現即時、歷史、告警三層監控。本文提供三套方案:iftop 即時連線級視覺化、ifconfig 差值腳本秒級速率、SNMP + 監控系統長期趨勢。

方案一:iftop — 即時連線級流量視覺化(推薦首選)

安裝


# CentOS/RHEL
yum install epel-release && yum install iftop
# 或編譯安裝(需 libpcap、ncurses、gcc)
yum install -y flex byacc libpcap ncurses ncurses-devel libpcap-devel
wget https://www.ex-parrot.com/pdw/iftop/download/iftop-1.0pre4.tar.gz
tar zxf iftop-*.tar.gz && cd iftop-*
./configure && make && make install

# Debian/Ubuntu
apt-get update && apt-get install iftop

運行與操作


iftop -i eth0          # 指定介面
iftop -i eth0 -n       # 直接顯示 IP,不解析主機名(更快)
iftop -i eth0 -P       # 顯示埠號

介面說明:

  • TX:發送流量;RX:接收流量;TOTAL:雙向總和。
  • cumm:運行以來累計;peak:峰值;rates:2s/10s/40s 移動平均。
  • 快捷鍵:h 説明、n 切換 IP/主機名、s 顯示來源埠、d 顯示目的埠、N 服務名/埠號、b 柱狀圖開關、q 退出。

方案二:ifconfig + Shell 腳本 — 秒級介面速率(無第三方依賴)

原理:每秒讀取 RX bytes、TX bytes 計算差值。

單介面監控腳本


#!/bin/bash
# rx_tx_rate.sh  [interval_sec]
IFACE=${1:-eth0}
INTERVAL=${2:-1}

rx_prev=$(awk '/RX bytes/{print $2}' /proc/net/dev | cut -d: -f2 | sed -n "$(($(grep -n "$IFACE" /proc/net/dev | cut -d: -f1))p)")
tx_prev=$(awk '/TX bytes/{print $6}' /proc/net/dev | cut -d: -f2 | sed -n "$(($(grep -n "$IFACE" /proc/net/dev | cut -d: -f1))p)")

while true; do
    sleep $INTERVAL
    rx_now=$(awk -v iface="$IFACE" '$1 ~ iface":" {print $2}' /proc/net/dev)
    tx_now=$(awk -v iface="$IFACE" '$1 ~ iface":" {print $10}' /proc/net/dev)
    rx_kb=$(( (rx_now - rx_prev) / 1024 / INTERVAL ))
    tx_kb=$(( (tx_now - tx_prev) / 1024 / INTERVAL ))
    echo "$(date '+%H:%M:%S') RX: ${rx_kb} KB/s  TX: ${tx_kb} KB/s"
    rx_prev=$rx_now; tx_prev=$tx_now
done

運行:./rx_tx_rate.sh eth0 1

簡易版(直接用 ifconfig,適配舊系統)


#!/bin/bash
IFACE=eth0
rx0=$(ifconfig $IFACE | grep -oP 'RX bytes:\K\d+')
tx0=$(ifconfig $IFACE | grep -oP 'TX bytes:\K\d+')
sleep 1
rx1=$(ifconfig $IFACE | grep -oP 'RX bytes:\K\d+')
tx1=$(ifconfig $IFACE | grep -oP 'TX bytes:\K\d+')
echo "RX: $(( (rx1-rx0)/1024 )) KB/s  TX: $(( (tx1-tx0)/1024 )) KB/s"

方案三:SNMP + Prometheus/Grafana/Zabbix — 生產級長期監控

  • 安裝 snmpd,配置 rocommunity public、view systemview included .1.3.6.1.2.1.2.2.1.10(ifInOctets)與 .1.3.6.1.2.1.2.2.1.16(ifOutOctets)。
  • Prometheus 使用 snmp_exporter 抓取,Grafana 繪製 rate(ifInOctets[5m]) 流量圖表。
  • Zabbix 內建網卡流量模板,啟用 SNMP 介面自動發現即可。

工具選型建議

需求推薦工具
即時排查「誰在佔頻寬」iftop / nethogs(進程級)
腳本嵌入、無依賴、秒級速率ifconfig/ss + /proc/net/dev 差值
歷史趨勢、告警、多主機聚合SNMP + Prometheus/Grafana/Zabbix
容器/ Kubernetes Pod 網路cAdvisor + node-exporter / Cilium Hubble

根據場景組合使用,構建從「當下看」到「長期管」的完整流量可觀測體系。

Copyright © Windows教程網 All Rights Reserved