У меня есть 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 минут после получения сигнала.