如何监控S3存储桶出入站数据及查询数据增减量(字节数)
监控S3存储桶入站/出站流量及数据量变化的方案
一、入站/出站字节数的时间维度监控
直接用CloudWatch自带的S3指标就能搞定:
BytesDownloaded:统计从S3到客户端的出站字节数,支持按时间维度查看流量变化,单位为字节BytesUploaded:统计客户端上传到S3的入站字节数,同样能看到不同时间段的流量趋势- 注意:如果用了CloudFront这类CDN,这些指标仅统计直接访问S3的流量,CDN侧的流量需要查看对应服务的监控指标
二、计算存储桶的新增/消耗数据量
S3没有直接的「新增字节数」指标,得用以下两种方法间接计算:
方法1:基于CloudWatch存储指标做差值计算
- 用CloudWatch的
BucketSizeBytes指标(可按存储类型筛选,比如Standard、Glacier),取两个时间点的数值差,就能得到这段时间的存储变化量(正数为新增,负数为消耗) - 也可以在CloudWatch里用数学表达式自动计算,比如
DIFF(BucketSizeBytes, 1h)就能算出1小时内的存储变化
方法2:S3访问日志+Athena分析
- 先开启目标存储桶的访问日志,把日志存到另一个S3桶里,然后用Athena创建表解析日志,通过SQL统计:
- 上传新增:筛选
operation = 'PUT'的日志记录,求和bytes_received字段 - 删除消耗:如果要统计删除带来的存储减少,需要结合被删对象的大小(可以通过日志关联对象元数据,或者提前记录对象大小信息),求和得到总消耗字节数
- 上传新增:筛选
三、额外注意点
- 如果存储桶开了版本控制,
BucketSizeBytes会包含所有版本的对象,要是只关心当前活跃版本的变化,用CurrentVersionSizeBytes指标(部分存储类型支持) - CloudWatch默认指标粒度是5分钟,需要更细粒度(比如1分钟)的话,得手动配置自定义指标的采集频率
内容的提问来源于stack exchange,提问作者Ori N
相关产品推荐
相关产品推荐

