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列表示程序已經接收的數據流量。