Как получить ранние уведомления об отсутствующей точке данных (приблизительно через 5 минут после отсутствия точки данных) в AWS Cloud Watch? - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть cron, который создает дамп базы данных и загружает его в корзину S3. В зависимости от статуса загрузки, я отправляю пользовательский показатель, чтобы сообщить о неудачной или успешной загрузке.

Вот фрагмент кода Python, который выполняется cron.

.
.
.
# 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,
        },
    ]
)
.
.
.

Я определил тревогу облачного наблюдения AWS для этой метрики с помощью Terraform, и она создана нормально.

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 минут и устанавливаю период тревоги равным.

Здесь возникает проблема, пропущенные данные не отправляют уведомление, когда я установил нарушение сигнализации для 1 из 1 точек данных , Что-то не так с моей конфигурацией?

Когда я вручную установил будильник облачного наблюдения для 1 из 2 точек данных Я получаю уведомление о тревоге через 2 дня после первого пропущенного. то есть, если я получу свое последнее назначение в 9:00, я получу уведомление в ~ 9: 47 утра. Если бы мой период был 1 день, я бы получил уведомление о сбое дампа через 2 дня!

Что мне не хватает? Это нормальное поведение? Как я могу получить уведомление близко к отсутствию точки данных? то есть, если последнее назначение данных было получено в 9:00, я получаю уведомление в ~ 9: 17 утра в течение 15-минутного периода наблюдения за облаком.

ПРИМЕЧАНИЕ : если я отправляю сигнал с ошибкой, я получаю уведомление в течение 5 минут после получения сигнала.

...