當公網訪問流量突增時,公網NAT網關可能觸發容量和帶寬上限,從而導致服務響應變慢,影響業務流量。您可以分析公網NAT網關中SNAT規則ECS實例的流量情況,通過VPC流日志篩選出高流量的ECS實例,從而優化網絡帶寬分配,改善網絡瓶頸。
功能介紹
公網NAT網關是一款面向企業的安全網關產品,提供SNAT和DNAT功能。通過公網NAT網關,您可以對大量訪問公網的機器進行精細化的運維監控和管理。同時通過公網NAT網關還可展示top流量,精確定位突發流量的ECS實例,并提供豐富多維度的流量監控指標。更多公網NAT網關的信息,請參見什么是公網NAT網關。
VPC流日志可以捕獲指定彈性網卡(Elastic Network Interfaces,ENI)、指定VPC或者交換機中所有彈性網卡的流量。
當您需要排查公網NAT網關(配置SNAT或者DNAT功能)中ECS實例的流量情況時,您可以創建VPC流日志,捕獲公網NAT網關所在交換機內的所有彈性網卡的流量。通過啟用和分析VPC流日志,系統地排查該公網NAT網關中ECS實例的流量,對于高流量實例進行有效的管理和優化,確保網絡正常運行。
關鍵特性
VPC流日志啟用后將收集和存儲流量日志數據,您可以查看并分析ECS訪問公網的各條鏈路的流量日志,全面了解各個ECS實例的網絡流量行為。
內網與公網之間的流量需要通過公網NAT網關進行中轉,公網NAT網關綁定的彈性網卡是流量進出公網NAT網關的接口。您可以通過公網NAT網關對應的彈性網卡監控從內網到公網的出入流量,統計各鏈路的流量使用情況和帶寬消耗。
如下圖所示,以公網NAT網關的彈性網卡作為分界,將ECS通過公網NAT網關訪問公網的鏈路劃分為四段。
您可以通過Flowlog日志中心查看并分析IN方向流量、OUT方向流量或者查看統計了哪些ENI的流量等信息。
登錄日志服務控制臺,您可以查看這4條鏈路的日志流量情況和統計的具體字段信息。關于流日志各字段記錄信息,請參見流日志概述。
序號 | 日志示例 |
① | 鏈路①的流量方向為in,源和目的IP地址如下:
|
② | 鏈路②的流量方向為out,源和目的IP地址如下:
|
③ | 鏈路③的流量方向為in,源和目的IP地址如下:
|
④ | 鏈路④的流量方向為out,源和目的IP地址如下:
|
使用場景
使用流日志排查公網NAT網關中高流量的ECS實例,主要適用于以下場景:
優化網絡性能:在高并發、高流量的業務場景中,通過使用流日志分析公網NAT網關中各ECS實例的出站和入站流量,可以排查出高流量實例,同時也可以識別出哪些實例和源IP組合導致了帶寬瓶頸,通過并合理分配帶寬資源,以避免某些實例過載而導致網絡瓶頸。
成本控制與優化:高流量實例可能導致高昂的帶寬費用,通過分析流量日志,識別出哪些實例和源IP持續產生高流量,優化這些實例的網絡訪問路徑,減少不必要的流量,降低成本。
場景示例
某企業擁有多個內部服務器,這些服務器通過公網NAT網關的SNAT功能訪問外部的互聯網資源。近期,企業發現內部服務器訪問外部互聯網資源的加載時間變長,影響了用戶體驗。該企業希望排查出流量較高的服務器,并通過合理優化和規劃帶寬資源等措施來緩解這些問題,提升用戶體驗。
本文以下圖場景為例。該企業在華東1(杭州)地域擁有一個VPC,其中交換機1內有三臺ECS實例,這些實例通過交換機2中公網NAT網關的SNAT功能訪問公網。現在由于內部服務器訪問公網流量突增,導致服務器響應變慢,影響體驗,需要通過VPC流日志排查并分析這三臺ECS實例中流量占比較高的實例,為重新規劃資源改善網絡性能瓶頸提供指導。
前提條件
您已在華東1(杭州)地域創建專有網絡VPC、交換機1和交換機2。具體操作,請參見創建和管理專有網絡。
您已在交換機1內創建3臺ECS實例,分別為ECS01、ECS02和ECS03。具體操作,請參見自定義購買實例。
您已在交換機2中創建公網NAT網關,并為該公網NAT網關創建交換機粒度的SNAT條目。該SNAT條目選擇的交換機粒度指向交換機1。具體操作,請參見使用公網NAT網關SNAT功能訪問互聯網。
配置項
具體配置
專有網絡VPC
VPC網段:172.16.0.0/12
交換機1網段
交換機網段:172.16.1.0/24
交換機2網段
交換機網段:172.16.3.0/24
公網NAT網關
公網NAT網關的私網IP:172.16.3.128
彈性公網IP
118.XX.XX.86
ECS實例
ECS01實例:172.16.1.44
ECS02實例:172.16.1.45
ECS03實例:172.16.1.46
操作步驟
步驟一:創建流日志
創建流日志前,請確保您已經滿足流日志的前提條件。具體操作,請參見流日志前提條件。
- 登錄專有網絡管理控制臺。
- 在左側導航欄,選擇 。
在頂部菜單欄處,選擇目標地域。本文選擇華東1(杭州)。
在流日志頁面,單擊創建流日志。
在創建流日志對話框,根據以下信息配置流日志,然后單擊確定。
配置
說明
資源類型
選擇要捕獲流量的資源類型,本文選擇交換機。
資源實例
選擇要捕獲流量的資源實例。本文選擇交換機1的實例ID。
流量類型
選擇要捕獲流量的類型,本文選擇全部流量。
項目(Project)
選擇存儲捕獲流量的項目(Project),本文選擇新建 Project,并輸入新建的Project名稱。
日志庫(Logstore)
選擇存儲捕獲流量的日志庫(Logstore),本文選擇新建 Logstore,并輸入新建的Logstore名稱。
開啟流日志分析報表功能
本文選擇開啟該功能。
步驟二:通過wrk工具模擬用戶流量
依次登錄ECS01、ECS02和ECS03實例。
在ECS01、ECS02和ECS03實例中分別執行以下命令,安裝wrk工具。
yum -y install git make gcc git clone https://github.com/wg/wrk.git yum install unzip cd wrk make
在ECS01、ECS02和ECS03實例中分別執行以下命令,進行用戶流量測試。
ECS01中執行以下命令。
./wrk -c 1000 -d 60s -t 3 http://101.XX.XX.200:80/ # 101.XX.XX.200為特定公網IP
ECS02中執行以下命令。
./wrk -c 2000 -d 60s -t 3 http://101.XX.XX.200:80/ # 101.XX.XX.200為特定公網IP
ECS03中執行以下命令。
./wrk -c 3000 -d 60s -t 3 http://101.XX.XX.200:80/ # 101.XX.XX.200為特定公網IP
命令行中的參數介紹:
-c:connections,每個線程保持的并發連接數。
-d:duration,測試的持續時長,s表示單位為秒。
-t:threads,指定要使用的線程數,即模擬的并發用戶數量。
步驟三:查看流日志
- 登錄專有網絡管理控制臺。
- 在左側導航欄,選擇 。
在頂部菜單欄處,選擇目標地域。本文選擇華東1(杭州)。
在流日志頁面,找到目標流日志,然后在日志服務列單擊日志庫(Logstore)名稱的鏈接,前往日志服務控制臺查看流量信息。
根據下圖示例順序,查看通過公網NAT網關SNAT條目訪問公網的ECS實例流量情況。
通過下圖可以觀察到,私網IP為
172.16.1.46
的ECS03實例流量較高。序號
步驟描述
①
本文以如下SQL語句為例,對采集到的VPC流日志進行聚合和排列,篩選去往某一特定公網IP地址的流量較高的ECS實例的圖表:
dstaddr: "101.XX.XX.200" and action: ACCEPT and srcaddr: 172.16.1.* | select date_format(from_unixtime(__time__ - __time__% 60), '%H:%i:%S') as time, srcaddr,sum(bytes*8/(case WHEN "end"-start=0 THEN 1 else "end"-start end)) as bandwidth group by time,srcaddr order by time asc limit 1000
該SQL語句定義了時間time、帶寬bandwidth(bps)、源地址srcaddr三個參數,time和srcaddr為聚合列,并按time從小到大排序,取1000條日志。關于字段的更多信息,請參見VPC流日志的字段詳情。
其中參數說明如下:
dstaddr
:目的地址,即公網IP地址。本文輸入101.XX.XX.200
。srcaddr
:源地址,即ECS實例IP地址。本文輸入172.16.1.*
。其余字段請參照示例值輸入。
說明如果您想要篩選某一特定公網IP到ECS實例的入流量信息,請輸入以下SQL語句查詢:
srcaddr: "101.XX.XX.200" and action: ACCEPT and dstaddr: 172.16.1.* | select date_format(from_unixtime(__time__ - __time__% 60), '%H:%i:%S') as time, dstaddr,sum(bytes*8/(case WHEN "end"-start=0 THEN 1 else "end"-start end)) as bandwidth group by time,dstaddr order by time asc limit 1000
其中參數說明如下:
srcaddr
:源地址,即公網IP地址。本文輸入101.XX.XX.200
。dstaddr
:目的地址,即ECS實例IP地址。本文輸入172.16.1.*
。生成流圖時,聚合列選擇
dstaddr
。
如果您想要篩選ECS實例去往所有公網IP的出流量信息,請輸入以下SQL語句查詢:
srcaddr: 172.16.1.* and action: ACCEPT | select date_format(from_unixtime(__time__ - __time__% 60), '%H:%i:%S') as time, srcaddr,sum(bytes*8/(case WHEN "end"-start=0 THEN 1 else "end"-start end)) as bandwidth from log where ip_to_domain(dstaddr)!='intranet' group by time,srcaddr order by time asc limit 1000
其中參數說明如下:
srcaddr
:源地址,即私網地址,本文輸入172.16.1.*
。dstaddr
:目的地址,即公網地址。生成流圖時,聚合列選擇
srcaddr
。
②
選擇要查看的流日志時間。本文選擇最近5分鐘。
③
單擊通用配置頁簽,然后單擊選擇流圖格式。
④
在查詢分析配置區域,設置以下參數信息:
x軸字段:設置為time。
y軸字段:設置為bandwidth。
聚合列:設置為srcaddr。
在標準配置區域,設置格式化為bps, Kbps, Mbps(SI)。
其余參數保持默認值。
⑤
單擊添加到儀表盤,在彈出的對話框中設置以下參數信息:
操作類型:本文以新建儀表盤為例進行說明。
布局模式:本文以網格布局為例進行說明。
儀表盤名稱:填寫儀表盤的名稱,本文輸入ECS經過NAT網關出流量。
您可以在儀表盤查看流日志信息。
⑥
單擊查詢/分析,即可查看各個ECS實例出公網的流量情況,排查出高流量的ECS實例。
相關文檔
如果您想要了解VPC流日志捕獲的具體字段信息,請參見流日志概述。
如果您在查詢流日志過程中,出現報錯信息,請參見查詢與分析日志的常見報錯。
如果您想了解查詢和分析日志的更多信息,請參見查詢和分析日志。