如何在AWS Cloud Watch上提前收到有关丢失数据点的通知(丢失数据点后大约5分钟)?

时间:2018-09-08 17:44:21

标签: amazon-web-services amazon-cloudwatch

我有一个cron,可以转储数据库并将其上传到S3存储桶。根据上传状态,我发送自定义指标来表示上传失败或上传成功。

这是cron运行的python代码片段。

.
.
.
# assume upload will work
upload_status = 0

try:
    s3.meta.client.upload_file(zip_file_path, S3_BUCKET, zip_file_name)
except boto3.exceptions.S3UploadFailedError:
    # set upload operation as failed
    upload_status = 1

# send a custom metric signifying a failed dump upload
client.put_metric_data(
    Namespace='custom/backup',
    MetricData=[
        {
            'MetricName': 'FailedS3BackupUploads',
            'Dimensions': [
                {
                    'Name': 'BucketName',
                    'Value': 'db-dump-test'
                },
                {
                    'Name': 'Environment',
                    'Value': 'Production'
                }
            ],
            'Value': upload_status,
        },
    ]
)
.
.
.

我使用Terraform为该指标定义了一个AWS云监视警报,并且创建得很好。

resource "aws_cloudwatch_metric_alarm" "production_dump_check" {
  alarm_name                = "Daily S3 database backup check"
  alarm_description         = "An alarm used to notify the Dev team when a backup is not saved in s3"
  comparison_operator       = "GreaterThanThreshold"
  evaluation_periods        = "1"
  metric_name               = "FailedS3BackupUploads"
  namespace                 = "${var.etl_cloud_watch_metric_namespace}"
  period                    = "900"
  statistic                 = "Sum"
  threshold                 = "0"
  alarm_actions = ["${var.etl_cloud_watch_notification_topic}"]
  ok_actions = ["${var.etl_cloud_watch_notification_topic}"]
  treat_missing_data = "breaching"
  dimensions {
    BucketName = "${var.etl_database_dump_s3_bucket_name}"
    Environment = "${var.etl_cloud_watch_environment}"
  }
}

为了实验起见,我每15分钟运行一次此cron并将警报的时间设置为相同。

问题来了,当我将警报设置为破坏时,丢失的数据不会发送通知     1个数据点中的1个 。我的配置有问题吗?

当我手动将云监视警报设置为触发时     对于2个数据点中的1个 在第一个丢失的警报之后,我得到了一个警报通知2数据点。 即,如果我在9:00 am得到我的最后一个数据点,我将在〜9:47am收到通知。如果我的期限是1天,那么2天后我会收到转储失败的通知!

我想念什么?这是正常行为吗?缺少数据点时,如何获得接近通知?也就是说,如果最后一个数据点是在上午9:00收到的,则我会在上午9:17左右收到15分钟的云监视通知。

注意:如果我发送失败的信号,则会在信号出现后的5分钟内按预期方式收到通知。

0 个答案:

没有答案