Linux系統中有各種查看網路流量的工具,比如sar、iftop、nethogs等,它們可以從不同的緯度來分析系統中流量資訊,本文介紹如何使用sar、iftop、nethogs查看Linux系統ECS執行個體中網路流量負載情況。
操作環境
在您使用Linux系統的ECS執行個體過程中,可能會遇到執行個體頻寬過高的情況,您可以按照以下步驟排查定位具體問題。
找到影響頻寬使用率過高的具體進程。
您可以使用sar、iftop、nethogs等工具定位具體進程。更多資訊,請參見sar工具的使用、iftop工具的使用或Nethogs工具的使用。
排查影響頻寬使用率過高的進程是否正常,並分類進行處理。
對於正常進程:您需要對伺服器的頻寬進行升級。具體操作,請參見訂用帳戶執行個體修改頻寬或隨用隨付執行個體修改頻寬。
對於異常進程:您可以手動對進程進行查殺,也可以使用第三方安全工具進行查殺。
sar工具的使用
sar(System Activity Reporter系統活動情況報告)是目前Linux上最為全面的系統效能分析工具之一,可以從多方面對系統的活動進行報告。sar可以從網路介面層面來分析資料包的收發情況、錯誤資訊等。
sar命令
使用sar來監控網路流量的常用命令如下所示。
sar -n DEV [interval] [count]
[interval]表示統計間隔,[count]表示統計次數。
使用樣本
執行如下命令,使用sar每1秒統計一次網路介面的活動狀況,連續統計5次。
sar -n DEV 1 5
命令執行後會列出每個網卡5次的平均資料取值,根據實際情況來確定頻寬跑滿的網卡名稱,對於ECS執行個體來說,通常內網網卡為eth0,外網網卡為eth1。
系統顯示類似如下,確認是eth1通過流量較大,然後執行以下步驟檢查具體問題。
顯示結果主要欄位說明
IFACE:網路介面名稱。
rxpck/s、txpck/s:每秒接收或發送的資料包數量。
rxkB/s、txkB/s:每秒接收或發送的位元組數,以kB/s為單位。
rxcmp/s、txcmp/s:每秒接收或發送的壓縮過的資料包數量。
rxmcst/s:每秒接收到的多播資料包。
iftop工具的使用
iftop是Linux系統中一個免費的網卡即時資料流量監控工具,可以監控包括指定網卡的即時資料流量、連接埠串連資訊、反向解析IP等資訊。
iftop命令
iftop常用命令如下。
iftop [-i interface]
interface表示網路介面名,比如eth0、eth1等。如果不通過-i參數指定介面名,則預設檢測第一塊網卡的使用方式。
使用樣本
遠端連線Linux系統的ECS執行個體。
具體操作,請參見串連方式概述。
執行如下命令,安裝iftop流量監控工具。
yum install iftop -y
執行如下命令,查看詳細連接埠流量佔用情況。
iftop -i eth0 -P
說明-P參數會顯示請求連接埠。
系統顯示類型如下,58690連接埠佔用流量最大。
執行如下命令,查看連接埠對應的進程。
netstat -tunlp |grep [$Port]
說明[$Port]為上一步查看的連接埠。
系統顯示類型如下。
確認對應服務後,您可以通過停止服務或使用iptables服務來對指定地址進行處理。
例如屏蔽IP地址或限速,以保證伺服器頻寬能夠正常使用。
顯示結果主要欄位說明
第①部分:頻寬使用方式。
第②部分:外部串連列表,即記錄了哪些IP正在和原生網路連接。
右側部分是即時資料流量資訊,分別是該訪問IP串連到本機2秒、10秒和40秒的平均流量。
=>
表示發送資料,<=
表示接收資料。
第③部分。
第一列:TX表示發送流量,RX表示接收流量,TOTAL表示總流量。
第二列cum:表示第一列各種情況的總流量。
第三列peak:表示第一列各種情況的流量峰值。
第四列rates:表示第一列各種情況2秒、10秒、40秒內的平均流量。
常見操作命令參數說明
進入iftop介面後,可以通過按下相應的字母快捷按鍵,來對顯示結果進行調整。
h:切換是否顯示協助。
n:切換顯示原生IP或主機名稱。
s:切換是否顯示原生host資訊。
d:切換是否顯示遠端目標主機的host資訊。
t:切換顯示格式為2行、1行、只顯示發送流量或只顯示接收流量。
N:切換顯示連接埠號碼或連接埠服務名稱。
S:切換是否顯示原生連接埠資訊。
D:切換是否顯示遠端目標主機的連接埠資訊。
p:切換是否顯示連接埠資訊。
P:切換暫停或繼續顯示。
b:切換是否顯示平均流量圖形條。
B:切換計算2秒或10秒或40秒內的平均流量。
T:切換是否顯示每個串連的總流量。
l:開啟螢幕過濾功能,輸入要過濾的字元。比如輸入相應IP地址,斷行符號後,螢幕就只顯示這個IP相關的流量資訊。
L:切換顯示畫面上邊的刻度,刻度不同,流量圖形條會有變化。
j或k:向上或向下滾動螢幕顯示的串連記錄。
1或2或3:根據右側顯示的三列流量資料進行排序。
<:根據左邊的本機名或IP排序。
>:根據遠端目標主機的主機名稱或IP排序。
o:切換是否固定只顯示當前的串連。
f:編輯過濾代碼。
!:調用Shell命令。
q:退出。
Nethogs工具的使用
Nethogs是一款開源的網路流量監控工具,可用於顯示每個進程的頻寬佔用情況。這樣可以更直觀定位異常流量的來源。Nethogs支援IPv4和IPv6協議,支援本地網卡及PPP串連。Nethogs工具的安裝方法請參閱其官方協助文檔,本文不再詳述。安裝完畢,直接輸入nethogs啟動工具即可。不帶任何參數時,Nethogs預設監控eth0。使用者可以通過ifconfig等指令核實具體哪個網路介面(eth1、eth0)對應公網網卡。
Nethogs命令
常見用法如下。
nethogs [-i interface]
interface表示網路介面名,比如eth0、eth1等。如果不通過-i參數指定介面名,則預設檢測第一塊網卡的使用方式。
使用樣本
遠端連線Linux系統的ECS執行個體。
具體操作,請參見串連方式概述。
執行如下命令,安裝nethogs流量監控工具。
yum install nethogs -y
執行如下命令,查看網卡上進程級的流量資訊。
nethogs eth1
說明nethogs預設的監控間隔是1秒,您可以通過-d參數來設定監控間隔。例如執行如下
nethogs eth1 -d 5
命令,設定監控間隔為5秒。系統顯示類似如下。
若確定進程是惡意程式,可以通過執行如下命令,終止進程。
kill -TERM [$Port1]
說明如果是Web服務程式,您可以使用iftop等工具來查詢具體IP來源,然後分析Web訪問日誌是否為正常流量。日誌分析可以使用logwatch或awstats等工具進行。
顯示結果說明
在nethogs監控介面,按s可以按照Sent列進行排序,按r可以按照Received列進行排序,按m可以切換不同的統計單位顯示,例如kb/s、kb、b、mb。監控介面資訊說明如下所示。
PID列表示相應流量關聯程式的進程號。
USER列表示相應進程的所屬使用者。
PROGRAM列表示程式的具體執行路徑。
DEV列當前監控的網路介面名稱。
Sent列表示相應進程已經發送的資料流量。
Received列表示程式已經接收的資料流量。