启用S3 Storage Lens高级指标查看存储桶访问次数

一、背景

1、查看所有存储桶的请求次数

查看S3文件的请求总数的方法之一是可以通过查看本账户的费用账单。在一份完整的账单中,可以看到如下的详细条目:

Amazon Simple Storage Service APS1-Requests-Tier1
$0.005 per 1,000 PUT, COPY, POST, or LIST requests
Amazon Simple Storage Service APS1-Requests-Tier2
$0.004 per 10,000 GET and all other requests

这两个条目就是对S3 Standard标准分层存储的读写。但是这个数据并不能区分存储桶Bucket的名字,也就无法进一步分析。

2、通过S3 Server Access Log或者CloudTrail请求详细日志查询各存储桶的访问请求

S3的日志可以通过两种方式进行查询,一是打开对应存储桶的S3 Server Access Log。本功能是针对单个存储桶的日志,且默认是关闭。如果要打印日志,需要另外准备一个专门存储日志的存储桶,然后将要开启日志的存储桶的Server Access Log打开,并配置日志写入另一个存储桶。写入之后,可通过Athena等工具查询。

另一种方式是使用CloudTrail。可参考这片博客介绍了CloudTrail查看S3日志,以及使用CloudTrail和使用S3 Server Access Log两种方式之间的对比。

如果查询S3存储桶的访问次数只是为了区分存储桶,并进行整体访问量分析,那么则可以使用本文所介绍的S3 Storage Lens功能。使用方法如下。

二、开启方法

进入S3服务。找到左侧的Storage Lens按钮,点击Dashboards进入。点击右侧的创建按钮。如下截图。

在创建向导上,输入名称,选择区域。这里建议选择主要数据所在的区域,例如存储桶在新加坡区域最多,那么就选择在新加坡区域。其他区域的存储桶的文件数量、访问量的数据,也会被汇集到新加坡区域所在的Dashboard面板上来。(数据本身不会被移动,只是统计数据大小、文件个数的信息被汇总)。接下来继续向下滚动页面。如下截图。

在向导界面选择包含所有Region和包含所有Bucket的统计数据。接下来继续向下滚动页面。如下截图。

在Metrics配置界面,选择Advanced metrics and recommendations,然后在数据类型位置,选择第一个Advanced metrics和第二个CloudWatch publishing。第一个选项就是采集访问文件次数的开关,第二个选项是将采集到的次数发布到CloudWatch上,以方便在CloudWatch上设置告警阈值等后续操作。接下来继续向下滚动页面。如下截图。

在数据分类上,除了默认第一个已经被选中外,再选中第二个Detailed status code metrics和第三个Advanced cost optimization metrics。第二个选项会采集对S3存储桶文件访问遇到404找不到文件等场景时候的错误计数。接下来继续向下滚动页面。如下截图。

在页面上点击View metrics includes in this dashboard按钮,展开可查看Advanced metrics包含的详细参数。这里仅做展示。接下来继续向下滚动页面。如下截图。

最后一步,在Metric是否导出结果位置,选择不导出Disable。最后点击创建按钮。如下截图。

创建完成。界面提示要48小时后才能生成统计数据。

三、配置生效后查询数据

1、首次启用生效时间

当您首次开启S3 Storage Lens后,需要48小时后,Dashboard的数据才能加载出来。

如果您之前开启了S3 Storage Lens的Free metrics,已经过了48小时获得了统计数据,然后本次新增开启Advanced metrics功能后,那么原有Dashboard上的Metrics会继续正常工作,但是新增的指标需要48小时才能显示出来。

2、查看数据

进入S3服务,点击左右下角的Storage Lens,进入后查看配置的dashboard。

在页面上可看到时间维度,在Overview标签页下会列出所有存储桶的整体文件个数、存储类型等信息。如下截图。

在第一个标签页Overview下,向下滚动页面,到Top N的位置,可按存储桶查看请求次数。从Metrics下拉框中,找到请求信息,可看到其中包含Get/Put等多种请求方式,选中后,即可按照存储桶维度查看。如下截图。

注:如果以下截图没有数据,是因为本功能刚启用,还不满48小时。请过48小时后再查看。48小时后,即可在不同维度看到各种请求次数的信息。

此外,前文的配置还有一个选项是将StorageLens的数据发布到CloudWatch上。经过了48小时后就可以查看了。

查看Dashboard对应Region的CloudWatch。例如创建Dashboard时候选择的新加坡区域,那么去查看CloudWatch也要选择对应区域。在S3上找到StorageLens的Metric,即可查看。如下截图。

查看到的数据效果如下截图。

四、费用

S3 Storage Lens分成Free metrics和Advanced metrics。前者免费,后者收费。根据官网收费页面,后者按照文件个数收费。官网价格如下。

Up to 25B objects monitored, $0.20 per million objects monitored per month
Greater than 25B to 100B objects monitored, $0.16 per million objects monitored per month
Greater than 100B objects monitored, $0.12 per million objects monitored per month

假设您的存储桶(所有存储桶)加起来总计5000万个文件,折合50 million,也就是不到25Billon(Billion单位是十亿)的区间,那么按照每1百万个文件$0.20计算,打开Advanced metrics的收费是50m * $0.20/m =$10,即每月10美金。

五、参考文档

Amazon S3 pricing:

https://aws.amazon.com/s3/pricing/

Amazon S3 的日志记录选项:

https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/logging-with-S3.html