Amazon Cloudwatch为监控我的EC2,负载均衡器,弹性缓存和RDS数据库等提供了一些非常有用的指标,并允许我为各种标准设置警报;但有没有办法配置它来监控我的S3?或者是否有任何其他监控工具(除了简单地启用日志记录),这将有助于我监控我的S3资源的POST / GET请求和数据量的数量?并为活动阈值或增加的数据存储提供警报?
答案 0 :(得分:3)
AWS S3是一种托管存储服务。 AWS CloudWatch for S3中唯一可用的指标是NumberOfObjects
和BucketSizeBytes
。为了更好地理解您的S3使用情况,您需要做一些额外的工作。
我最近编写了一个AWS Lambda函数,可以完全满足您的要求,并且可在此处获取:
https://github.com/maginetv/s3logs-cloudwatch
它的工作原理是将S3服务器端日志文件和聚合/导出指标解析为AWS Cloudwatch(CloudWatch允许您发布自定义指标)。
在您的AWS账户上部署此功能后,您将在AWS CloudWatch中获得的示例图表是:
RestGetObject_RequestCount
RestPutObject_RequestCount
RestHeadObject_RequestCount
BatchDeleteObject_RequestCount
RestPostMultiObjectDelete_RequestCount
RestGetObject_HTTP_2XX_RequestCount
RestGetObject_HTTP_4XX_RequestCount
RestGetObject_HTTP_5XX_RequestCount
+ many others
由于指标会导出到CloudWatch,因此您也可以轻松为其设置警报。 CloudFormation模板包含在GitHub存储库中,您可以非常快速地部署此功能,以便了解S3存储桶的使用情况。
编辑2016-12-10:
2016年11月,AWS在CloudWatch中添加了额外的S3请求指标,可在需要时启用。其中包括AllRequests
,GetRequests
,PutRequests
,DeleteRequests
,HeadRequests
等指标。有关此功能的详细信息,请参阅Monitoring Metrics with Amazon CloudWatch文档。< / p>
答案 1 :(得分:1)
我也无法通过CloudWatch找到任何方法。 Derek @ AWS在2012年4月回答了这个问题,因为CloudWatch没有S3支持。 https://forums.aws.amazon.com/message.jspa?messageID=338089
我唯一能想到的就是将S3访问日志导入日志服务(如Splunk)。然后创建一个自定义云监视指标,您可以在其中发布从日志中解析的数据。但是你必须过滤出访问日志的轮询并且...... 当你在它时,你可以在Splunk中而不是在S3中创建警报。
如果您的用例仅在您使用过多时提醒,则可以为S3使用设置帐户结算提醒。
答案 2 :(得分:1)
我认为这可能取决于您希望从何处跟踪访问权限。即如果你试图从外部http / https请求测量/观察S3对象的使用,那么Anthony的建议如果启用S3日志记录然后导入splunk(或redshift)进行分析可能会有效。您还可以每天查看请求的结算状态。
如果尝试从您自己的应用程序中获取使用情况,则会有一些AWS SDK cloudwatch指标:
http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/metrics/package-summary.html
和
答案 3 :(得分:0)
S3是一项托管服务,这意味着您无需根据系统事件采取措施以保持其正常运行(只要您能够支付服务的使用费用)。 CloudWatch的精神是帮助监控需要您采取措施以使其保持运行的服务。
例如,EC2实例(您自己管理)通常需要监控,以便在它们过载或未充分使用时或在崩溃时发出警报;在某些时候需要采取行动,以便扩展新实例以扩展,拆除未使用的实例以缩小,或重新启动已崩溃的实例。 CloudWatch旨在帮助您更有效地管理这些资源。
答案 4 :(得分:0)
要在存储桶中启用Request and Data transfer metrics,可以运行以下命令。请注意,这些都是付费指标。
aws s3api put-bucket-metrics-configuration \
--bucket YOUR-BUCKET-NAME \
--metrics-configuration Id=EntireBucket
--id EntireBucket
This tutorial介绍了如何在AWS Console中通过点击界面进行操作。