首页 > 解决方案 > 如果 S3 存储桶未接收数据,CloudWatch 警报

问题描述

如果 S3 未收到任何数据,我如何创建警报以获取电子邮件?

我只看到 NumberOfObjects 和 BucketSizeBytes 的指标,但现在不知道如何从中形成“不增加”警报。任何帮助,将不胜感激。

标签: amazon-web-servicesamazon-s3alarmamazon-cloudwatchamazon-cloudwatch-metrics

解决方案


如果存储桶大小应始终增加(始终期望日志以更高的速率生成,然后它们会从存储桶中过期),您可以针对 BucketSizeBytes 指标的变化率创建警报。

您可以使用指标数学来定义变化率指标:https ://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html

相应图表的来源如下所示(将 替换为BUCKET_NAME_GOES_HERE您的存储桶和region您的存储桶所在的区域):

{
    "metrics": [
        [ { "expression": "RATE(m1)", "label": "Rate of change", "id": "e1" } ],
        [ "AWS/S3", "BucketSizeBytes", "StorageType", "StandardStorage", "BucketName", "BUCKET_NAME_GOES_HERE", { "id": "m1" } ]
    ],
    "view": "timeSeries",
    "stacked": false,
    "region": "us-east-1",
    "stat": "Sum",
    "period": 86400
}

然后在变化率为 0(桶大小不增加)或小于 0(桶大小下降)时创建警报。

有关度量数学警报的更多信息,请参见此处:https ://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Create-alarm-on-metric-math-expression.html

这种方法的一些缺点是:

  • 存储桶指标每天仅发布一次,因此您不会注意到日志在发生后至少一天停止。

  • 其他东西可能会将数据放入同一个存储桶中,使其大小增加,您不会知道日志实际上停止流动。

如果这两件事让您担心,我会寻找一个监控 CloudFront 端而不是 S3 端的解决方案。


推荐阅读