如何在Linux下統計高速網路中的流量?

2021-09-01 22:20:02 字數 2492 閱讀 3995

2014-01-22 11:04 彭秦進 

極客範 字型大小:

t|  t

在linux中有很多的流量監控工具,它們可以監控、分類網路流量,以花哨的圖形使用者介面提供實時流量分析報告。本文中我們介紹一種簡單的shell 指令碼,它可以監控網路流量而且不依賴於緩慢的libpcap庫。

在linux中有很多的流量監控工具,它們可以監控、分類網路流量,以花哨的圖形使用者介面提供實時流量分析報告。大多數這些工具(例如:ntopng , iftop )都是基於libpcap 庫的 ,這個函式庫是用來擷取流經網絡卡的資料報的,可在使用者空間用來監視分析網路流量。儘管這些工具功能齊全,然而基於libpcap庫的流量監控工具無法處理高速(gb以上)的網路介面,原因是由於在使用者空間做資料報擷取的系統開銷過高所致。

在本文中我們介紹一種簡單的shell 指令碼,它可以監控網路流量而且不依賴於緩慢的libpcap庫。這些指令碼支援gb以上規模的高速網路介面,如果你對「匯聚型」的網路流量感興趣的話,它們可統計每個網路介面上的流量。

指令碼主要是基於sysfs虛擬檔案系統,這是由核心用來將裝置或驅動相關的資訊輸出到使用者空間的一種機制。網路介面的相關分析資料會通過「/sys/class/net//statistics」輸出。

舉個例子,eth0的網口上分析報告會輸出到這些檔案中:

這些資料會根據核心資料發生變更的時候自動重新整理。因此,你可以編寫一系列的指令碼進行分析並計算流量統計。下面就是這樣的指令碼(感謝 joemiller 提供)。第乙個指令碼是統計每秒資料量,包含接收(rx)或傳送(tx)。而後面的則是乙個描述網路傳輸中的接收(rx)傳送(tx)頻寬。這些指令碼中安裝不需要任何的工具。

測量網口每秒資料報:

#!/bin/bash 

interval

="1"

# update interval in seconds 

if [ -z "$1" ]; then 

echo 

echo usage: $0 [network-inte***ce] 

echo 

echo e.g. $0 eth0 

echo 

echo shows packets-per-second 

exit 

fi if

=$1 

while true 

do r1

=`cat /sys/class/net/$1/statistics/rx_packets` 

t1=`cat /sys/class/net/$1/statistics/tx_packets` 

sleep $interval 

r2=`cat /sys/class/net/$1/statistics/rx_packets` 

t2=`cat /sys/class/net/$1/statistics/tx_packets` 

txpps

=`expr $t2 - $t1` 

rxpps

=`expr $r2 - $r1` 

echo "tx $1: $txpps pkts/s rx $1: $rxpps pkts/s" 

done 

網路頻寬測量:

#!/bin/bash 

interval

="1"

# update interval in seconds 

if [ -z "$1" ]; then 

echo 

echo usage: $0 [network-inte***ce] 

echo 

echo e.g. $0 eth0 

echo 

exit 

fi if

=$1 

while true 

do r1

=`cat /sys/class/net/$1/statistics/rx_bytes` 

t1=`cat /sys/class/net/$1/statistics/tx_bytes` 

sleep $interval 

r2=`cat /sys/class/net/$1/statistics/rx_bytes` 

t2=`cat /sys/class/net/$1/statistics/tx_bytes` 

tbps

=`expr $t2 - $t1` 

rbps

=`expr $r2 - $r1` 

tkbps

=`expr $tbps / 1024` 

rkbps

=`expr $rbps / 1024` 

echo "tx $1: $tkbps kb/s rx $1: $rkbps kb/s" 

done 

下面的螢幕截圖顯示了上面的兩個指令碼的輸出。

如何在Linux下統計高速網路中的流量

在linux中有很多的流量監控工具,它們可以監控 分類網路流量,以花哨的圖形使用者介面提供實時流量分析報告。大多數這些工具 例如 ntopng iftop 都是基於libpcap 庫的 這個函式庫是用來擷取流經網絡卡的資料報的,可在使用者空間用來監視分析網路流量。儘管這些工具功能齊全,然而基於lib...

如何在Linux下清屏?

出處 1351 感謝原作者的整理 在windows的dos操作介面裡面,清屏的命令是cls,那麼在linux 裡面的清屏命令是什麼呢?下面筆者分享幾種在linux下用過的清屏方法。1 clear命令 這個命令將會重新整理螢幕,本質上只是讓終端顯示頁向後翻了一頁,如果向上滾動螢幕還可以看到之前的操作資...

如何在Linux下安裝Docker

docker包括三個基本概念 l 映象 image l 容器 container l 倉庫 repository 理解了這三個概念,就理解了 docker 的整個生命週期。映象image docker映象就是乙個唯讀的模板。例如 乙個映象可以包含乙個完整的 ubuntu 作業系統環境,裡面僅安裝了 ...