全部產品
Search
文件中心

Elastic Compute Service:如何查看Linux系統網路流量負載情況?

更新時間:Jul 04, 2024

Linux系統中有各種查看網路流量的工具,比如sar、iftop、nethogs等,它們可以從不同的緯度來分析系統中流量資訊,本文介紹如何使用sar、iftop、nethogs查看Linux系統ECS執行個體中網路流量負載情況。

操作環境

在您使用Linux系統的ECS執行個體過程中,可能會遇到執行個體頻寬過高的情況,您可以按照以下步驟排查定位具體問題。

  1. 找到影響頻寬使用率過高的具體進程。

    您可以使用sar、iftop、nethogs等工具定位具體進程。更多資訊,請參見sar工具的使用iftop工具的使用Nethogs工具的使用

  2. 排查影響頻寬使用率過高的進程是否正常,並分類進行處理。

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參數指定介面名,則預設檢測第一塊網卡的使用方式。

使用樣本

  1. 遠端連線Linux系統的ECS執行個體。

    具體操作,請參見串連方式概述

  2. 執行如下命令,安裝iftop流量監控工具。

    yum install iftop -y
  3. 執行如下命令,查看詳細連接埠流量佔用情況。

    iftop -i eth0 -P
    說明

    -P參數會顯示請求連接埠。

    系統顯示類型如下,58690連接埠佔用流量最大。 2023-02-26_18-15-54

  4. 執行如下命令,查看連接埠對應的進程。

    netstat -tunlp |grep [$Port]
    說明

    [$Port]為上一步查看的連接埠。

    系統顯示類型如下。

  5. 確認對應服務後,您可以通過停止服務或使用iptables服務來對指定地址進行處理。

    例如屏蔽IP地址或限速,以保證伺服器頻寬能夠正常使用。

顯示結果主要欄位說明

2023-02-26_19-30-35

  • 第①部分:頻寬使用方式。

  • 第②部分:外部串連列表,即記錄了哪些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參數指定介面名,則預設檢測第一塊網卡的使用方式。

使用樣本

  1. 遠端連線Linux系統的ECS執行個體。

    具體操作,請參見串連方式概述

  2. 執行如下命令,安裝nethogs流量監控工具。

    yum install nethogs -y
  3. 執行如下命令,查看網卡上進程級的流量資訊。

    nethogs eth1
    說明

    nethogs預設的監控間隔是1秒,您可以通過-d參數來設定監控間隔。例如執行如下nethogs eth1 -d 5命令,設定監控間隔為5秒。

    系統顯示類似如下。 5

  4. 若確定進程是惡意程式,可以通過執行如下命令,終止進程。

    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列表示程式已經接收的資料流量。