天天看點

詳解實時檢視網卡流量的幾款工具

目錄

nload工具

         iftop工具

sar指令

實時監控腳本1

實時監控腳本2

nload工具

nload用于實時檢視網卡流量,預設系統都沒有安裝,首先安裝方式如下:

使用也非常簡單,如下:

$ nload              Device eth0 [192.168.0.110] (4/5):                  ===================================================================================              Incoming:              Curr: 5.21 kBit/s      # Incoming:進來的流量              Avg: 4.09 kBit/s       # Outgoing:出去的流量              Min: 1.59 kBit/s       # Curr:目前的流量值              Max: 12.51 kBit/s      # Avg:平均值的流量值              Ttl: 4.16 GByte        # Min:最小的流量值              Outgoing:                          # Max:最大的流量值              Curr: 16.48 kBit/s     # Ttl:總的流量值              Avg: 14.38 kBit/s              Min: 6.73 kBit/s                   
            Max: 28.39 kBit/s

           

iftop工具

預設系統沒有安裝,需要安裝,如下:

# 需要epel環境              $ yum install -y epel-release              $ yum install -y iftop
           

安裝完成之後,輸入iftop便可看到如下界面

詳解實時檢視網卡流量的幾款工具

其中,相關參數解釋如下:

1.界面上面顯示的是類似刻度尺的刻度範圍,為顯示流量圖形的長條作标尺用的。2.中間的<= =>這兩個左右箭頭,表示的是流量的方向。3.TX:發送流量4.RX:接收流量5.TOTAL:總流量6.Cumm:運作iftop到目前時間的總流量7.peak:流量峰值8.rates:分别表示過去 2s 10s 40s 的平均流量

sar指令

sar指令包含在sysstat工具包中,提供系統的衆多統計資料。其在不同的系統上指令有些差異,某些系統提供的sar支援基于網絡接口的資料統計,也可以檢視裝置上每秒收發包的個數和流量。

# DEV顯示網絡接口資訊

# 指令後面1 2 意思是:每一秒鐘取1次值,取2次              $ sar –n DEV  1 2
           

另外,-n參數很有用,他有6個不同的開關:DEV | EDEV | NFS | NFSD | SOCK | ALL ,其代表的含義如下:

DEV顯示網絡接口資訊。EDEV顯示關于網絡錯誤的統計資料。NFS統計活動的NFS用戶端的資訊。NFSD統計NFS伺服器的資訊 SOCK顯示套接字資訊 ALL顯示所有5個開關

$ sar -n DEV 1 2

Linux 3.10.0-514.26.2.el7.x86_64 (localhost)    08/31/2019      _x86_64_        (1 CPU)              09:52:28 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s              09:52:29 AM      eth0      2.02      1.01      0.13      0.16      0.00      0.00      0.00              09:52:29 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00              09:52:29 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s              09:52:30 AM      eth0      1.02      1.02      0.07      0.23      0.00      0.00      0.00              09:52:30 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00              Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s              Average:         eth0      1.52      1.02      0.10      0.19      0.00      0.00      0.00              Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
           

參數說明:

•IFACE:LAN接口•rxpck/s:每秒鐘接收的資料包•txpck/s:每秒鐘發送的資料包•rxbyt/s:每秒鐘接收的位元組數•txbyt/s:每秒鐘發送的位元組數•rxcmp/s:每秒鐘接收的壓縮資料包•txcmp/s:每秒鐘發送的壓縮資料包•rxmcst/s:每秒鐘接收的多點傳播資料包•rxerr/s:每秒鐘接收的壞資料包•txerr/s:每秒鐘發送的壞資料包•coll/s:每秒沖突數•rxdrop/s:因為緩沖充滿,每秒鐘丢棄的已接收資料包數•txdrop/s:因為緩沖充滿,每秒鐘丢棄的已發送資料包數•txcarr/s:發送資料包時,每秒載波錯誤數•rxfram/s:每秒接收資料包的幀對齊錯誤數•rxfifo/s:接收的資料包每秒FIFO過速的錯誤數•txfifo/s:發送的資料包每秒FIFO過速的錯誤數

實時監控腳本1

ifconfig可以檢視的是從連上網開始的流量總和,cat /proc/net/dev記錄的值也是總流量,那麼可以計算一下,實時流量=目前流量-上一秒的流量。

[[email protected] ~]# cat network.sh               # 傳入網卡參數              ethn=$1              while true              do              RX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}')              TX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}')              sleep 1              RX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}')              TX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}')              clear              # echo -e激活轉義符              # 輸出時間的标題              echo -e "t RX `date +%k:%M:%S` TX"              RX=$((${RX_next}-${RX_pre}))              TX=$((${TX_next}-${TX_pre}))              if [[ $RX -lt 1024 ]];then              RX="${RX}B/s"              elif [[ $RX -gt 1048576 ]];then              RX=$(echo $RX | awk '{print $1/1048576 "MB/s"}')              else              RX=$(echo $RX | awk '{print $1/1024 "KB/s"}')              fi              if [[ $TX -lt 1024 ]];then              TX="${TX}B/s"              elif [[ $TX -gt 1048576 ]];then              TX=$(echo $TX | awk '{print $1/1048576 "MB/s"}')              else              TX=$(echo $TX | awk '{print $1/1024 "KB/s"}')              fi              # 輸出流量              echo -e "$ethn t $RX   $TX "              done
           

執行結果如下:

[[email protected] ~]# ./network.sh  eth0              RX 20:23:38 TX              eth0     66B/s   0B/s               RX 20:23:39 TX              eth0     132B/s   0B/s               RX 20:23:40 TX              eth0     186B/s   194B/s               RX 20:23:41 TX              eth0     240B/s   194B/s               RX 20:23:42 TX              eth0     132B/s   0B/s               RX 20:23:43 TX              eth0     240B/s   194B/s               RX 20:23:44 TX              eth0     396B/s   4.19727KB/s               RX 20:23:45 TX              eth0     276B/s   178B/s
           

實時監控腳本2

$ cat network_flow.sh               # 監控實時網卡流量              # $1 接收所傳第一個參數 即要監控的網卡              NIC=$1              # echo -e "traffic in --- traffic out"              while true;do              # $0 指令輸出結果 ~ 比對模式              OLD_IN=`awk '$0~"'$NIC'"{print $2}' /proc/net/dev`              OLD_OUT=`awk '$0~"'$NIC'"{print $10}' /proc/net/dev`              sleep 1              NEW_IN=`awk '$0~"'$NIC'"{print $2}' /proc/net/dev`              NEW_OUT=`awk '$0~"'$NIC'"{print $10}' /proc/net/dev`              clear              # printf不換行 %s占位符              IN=$(printf "%.1f%s" "$(($NEW_IN-$OLD_IN))" "B/s")              OUT=$(printf "%.1f%s" "$(($NEW_OUT-$OLD_OUT))" "B/s")              echo "       traffic in  `date +%k:%M:%S`  traffic out "              echo "$NIC   $IN              $OUT"              done
           

執行結果如下:

$ ./network_flow.sh eth0              traffic in  11:15:02  traffic out               eth0   732.0B/s              948.0B/s              traffic in  11:15:03  traffic out               eth0   132.0B/s              0.0B/s              traffic in  11:15:04  traffic out               eth0   132.0B/s              0.0B/s              traffic in  11:15:05  traffic out               eth0   132.0B/s              0.0B/s              traffic in  11:15:06  traffic out               eth0   186.0B/s              242.0B/s              traffic in  11:15:07  traffic out               eth0   132.0B/s              0.0B/s              traffic in  11:15:08  traffic out               eth0   132.0B/s              0.0B/s              traffic in  11:15:09  traffic out               eth0   132.0B/s              0.0B/s              traffic in  11:15:10  traffic out               eth0   240.0B/s              242.0B/s              traffic in  11:15:11  traffic out               eth0   132.0B/s              0.0B/s
           

來源:

https://www.dazhuanlan.com

(轉載與:開源Linux)