在多个业务部门共用NAT网关以访问外部资源的场景中,进行成本分析时常常面临合理拆分NAT网关所产生费用的挑战。因此,您可以使用会话日志功能,将捕获的SNAT会话与流量数据存储于阿里云日志服务中,以便在日志服务中对捕获的日志内容进行整理,从而实现对NAT网关费用的合理拆分。
场景示例
某企业在云端设有业务部和企划部。两者均需访问外部资源。为提高安全性并简化网络架构,企业决定通过NAT网关统一为这两个部门提供外部资源的访问能力。
财务部门在月末进行成本分析时遇到了难题,无法合理地将NAT网关产生的费用分配给业务部和企划部。为实现费用的合理分摊,企业的运维人员首先利用会话日志功能,将捕获的SNAT会话日志存储至阿里云日志服务。运维人员通过SQL语句对存储的数据进行分析,根据各部门使用流量的占比情况,对NAT网关产生的费用进行分摊。
通过上述方法,企业能够有效地将NAT网关的费用合理分配给各部门,确保成本的透明性。同时,该方案还有助于提高资源利用效率和安全性,从而节省企业整体运营成本。
使用须知
费用说明
会话日志不收取日志生成费用,但会话日志所捕获的SNAT会话将存储于阿里云日志服务中,日志服务将收取相应的存储和检索等费用。更多信息,请参见日志服务计费。
使用限制
按固定规格计费(停止新购)的NAT 网关实例不支持开启会话日志服务。
会话日志不支持捕获DNAT会话。
操作步骤
步骤一:启用会话日志
登录NAT网关管理控制台,找到目标NAT网关实例,单击NAT网关实例ID。
在监控和日志页签,单击
,选择现有的或创建日志服务Project和日志库Logstore。在监控和日志页签,单击目标信息列的名称,以查看日志内容。
步骤二:统计流量占比
通过SQL语句,查看按网段(部门)区分后,经过NAT网关的流量占比情况。
日志服务Project支持使用查询语句对存储在Logstore中的日志进行筛选。筛选结果可独立使用,也可以用于分析语句,进行更复杂的分析处理。更多信息,请参见查询语法与功能。
NAT网关计费指标中的处理流量是指统计的总处理流量,包括出流量和入流量。采集到的出流量和入流量数据均为在NAT网关处理前的数据。
完整语句
select
concat(split_part(pri_ip, '.', 1), '.', split_part(pri_ip, '.', 2), '.', split_part(pri_ip, '.', 3), '*') as pri_ip,
sum(cast(bytes_from_vpc as bigint) + cast(bytes_from_pub as bigint)) as total_bytes,
round(sum(cast(bytes_from_vpc as bigint) + cast(bytes_from_pub as bigint)) * 100.0 /
(select sum(cast(bytes_from_vpc as bigint) + cast(bytes_from_pub as bigint)) from log), 2) as percentage
from
log
group by
pri_ip
order by
percentage desc
语句解析
该企业的网络架构采用按部门划分子网的方式,业务部
172.16.10.0/24
,企划部172.16.20.0/24
。通过将网络流量按子网聚合,可以清晰地归属到各个部门。concat( split_part(pri_ip, '.', 1), '.', split_part(pri_ip, '.', 2), '.', split_part(pri_ip, '.', 3), '.*' ) as pri_ip
此数据是成本核算分摊的核心依据,采集到的出流量和入流量数据均为在NAT网关处理前的数据。
sum( cast(bytes_from_vpc as bigint) + cast(bytes_from_pub as bigint) ) as total_bytes
当多个NAT网关实例共用同一日志服务时,请您在查询语句之前添加相应的查询条件。
instance_id : NAT网关实例ID |
当数据量较大时,可以将数据流量转换为千兆字节
total_GB
进行展示。示例
sum(cast(bytes_from_vpc as bigint) + cast(bytes_from_pub as bigint)) / 1024 / 1024 / 1024 as total_GB
完整语句
select concat(split_part(pri_ip, '.', 1), '.', split_part(pri_ip, '.', 2), '.', split_part(pri_ip, '.', 3), '*') as pri_ip, sum(cast(bytes_from_vpc as bigint) + cast(bytes_from_pub as bigint)) / 1024 / 1024 / 1024 as total_GB, round( (sum(cast(bytes_from_vpc as bigint) + cast(bytes_from_pub as bigint)) / 1024 / 1024 / 1024) * 100.0 / (select sum(cast(bytes_from_vpc as bigint) + cast(bytes_from_pub as bigint)) / 1024 / 1024 / 1024 from log), 2) as percentage from log group by pri_ip order by percentage desc
相关内容
如果您希望了解会话日志捕获的具体字段信息,请参见会话日志。
如果您希望了解SQL分析语句的基础语法,请参见SQL分析语法与功能。