当公网访问流量突增时,公网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的流量等信息。
使用场景
使用流日志排查公网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功能访问互联网。
操作步骤
步骤一:创建流日志
创建流日志前,请确保您已经满足流日志的前提条件。具体操作,请参见流日志前提条件。
- 登录专有网络管理控制台。
- 在左侧导航栏,选择 。
在顶部菜单栏处,选择目标地域。本文选择华东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流日志捕获的具体字段信息,请参见流日志概述。
如果您在查询流日志过程中,出现报错信息,请参见查询与分析日志的常见报错。
如果您想了解查询和分析日志的更多信息,请参见查询和分析日志。