問題現象
服務訪問異常:業務回應時間顯著延長,出現請求逾時或服務無法訪問的情況。
監控指標過高:通過ECS控制台或CloudMonitor查看,執行個體的公網出方向頻寬使用率持續高於80%,接近或達到頻寬上限或網路連接數突然增加。
收到監控警示:收到簡訊或郵件,提示網路頻寬使用率已超過預設的警示閾值。
問題原因
異常進程或惡意程式:執行個體被植入挖礦程式、木馬病毒或被用作DDoS攻擊的肉機,此類惡意程式會產生大量異常網路流量。
網路攻擊:執行個體對外提供服務的連接埠遭受了如DDoS攻擊、暴力破解等惡意訪問,導致入頻寬被大量無效請求佔滿。
執行個體網路規格不足:隨著業務發展,執行個體的頻寬規格已無法承載正常的業務流量,達到網路效能瓶頸。
解決方案
首先通過sar工具定位流量異常的網卡,然後使用iftop工具(定位消耗頻寬的對端IP)或nethogs工具(定位高流量進程)分析網卡流量,最後根據進程和IP性質採取相應措施。
步驟一:定位高流量網卡
通過sar工具確認高流量網卡,明確排查目標。
通過VNC串連登入ECS執行個體。
訪問ECS控制台-執行個體。在頁面左側頂部,選擇目標資源所在的資源群組和地區。
進入目標執行個體詳情頁,單擊遠端連線,選擇通過VNC遠端連線。輸入帳號和密碼,登入ECS執行個體。
統計網路介面資料。
# -n DEV: 報告網路裝置統計資訊 # 1 5: 每1秒採樣一次,共採樣5次 sudo sar -n DEV 1 5確定高流量網卡。
重點關注
Average的txkB/s(平均出網頻寬)。通過對比,找出數值最高的IFACE(網卡名稱)。rxkB/s表示平均入網頻寬速率。
樣本中,
eth0網卡的txkB/s最高,因此eth0為高流量網卡。
步驟二:分析並處理高流量問題
分析網卡流量。
iftop:以“串連視角”監控網卡流量,可找出與本機通訊流量最大的IP地址和連接埠。Web服務可通過
iftop定位高流量IP,並結合logwatch等工具分析其Web日誌,以判定流量合規性。nethogs:以“進程視角”監控網卡流量,可找出佔用網路頻寬最大的進程。
iftop工具
安裝
iftop工具。Alibaba Cloud Linux及Centos類型
sudo yum install -y iftopUbuntu及Debian類型
sudo apt update sudo apt install -y iftop
監控高流量網卡。
<IFACE>請替換為步驟一定位的高流量網卡名稱。# -i <IFACE>: 指定監控的網卡為<IFACE> # -P: 顯示連接埠號碼 (Port) sudo iftop -i <IFACE> -P以高流量網卡名稱為
eth0為例,執行sudo iftop -i eth0 -P。分析網卡流量,尋找消耗頻寬的對端IP。

即時資料流量資訊由高到低排列,其中,
=>符號的流量資訊,即本機向對端IP發送資料的速率。樣本中在過去2秒內,本機向IP140.205.11.x的平均出網流量為4.32Mb/s。輸入
q,退出iftop工具介面查看連接埠對應的進程。
<消耗頻寬的對端IP>通過上一步擷取。sudo netstat -antp | grep <消耗頻寬的對端IP>樣本輸出:

樣本中,本地IP為
172.16.0.x,對端IP為140.205.11.x,對應進程為nginx:worker,PID為2282。
nethogs工具
使用樣本
安裝nethogs工具。
Alibaba Cloud Linux及Centos類型
sudo yum install -y nethogsUbuntu及Debian類型
sudo apt update sudo apt install -y nethogs
監控高流量網卡。
<IFACE>請替換為步驟一定位的高流量網卡名稱。# 預設監控間隔為1秒,可通過-d指定監控間隔。 sudo nethogs <IFACE>以高流量網卡名稱為
eth0為例,執行sudo nethogs eth0。分析網卡流量。

其中,
SENT表示發送的流量資訊,即本機向對端IP(接收方)發送資料的速率。樣本中流量佔用最高的進程為nginx:worker process,出網流量約為696KB/s,其進程ID為2282,輸入q可退出工具互動介面。
根據進程或對端IP選擇解決方案。
後續建議
建議對系統指標進行周期性採集以供持續分析,請參見使用atop工具監控Linux系統指標。
配置執行個體監控與警示環境,便於後續風險和異常的通知。