Создать сигнал тревоги CloudWatch на всех экземплярах в кластере RDS
У меня есть кластер RDS Aurora с 2 экземплярами, читатель и писатель.
Я создал будильник CloudWatch на DatabaseConnections
с размерностью DBClusterIdentifier
,
Но будильник работает только в одном случае (писатель). Тревога не сработает, если считыватель превысит порог.
Как получить сигнал тревоги, если какой-либо экземпляр RDS пересекает порог.
Это мой код:
resource "aws_cloudwatch_metric_alarm" "rds-connection-count-alarm" {
alarm_name = "rds-connection-count-alarm"
comparison_operator = "GreaterThanThreshold"
evaluation_periods = "1"
metric_name = "DatabaseConnections"
namespace = "AWS/RDS"
period = "60"
statistic = "Maximum"
threshold = "1000" # max 2000 for db.r4.xlarge rds instances
dimensions {
DBClusterIdentifier = "${aws_rds_cluster.my_rds_cluster.id}"
}
alarm_description = "Alerts Slack if the DB connection count exceeds 1000"
alarm_actions = ["${data.aws_sns_topic.notification_topic.arn}"]
ok_actions = ["${data.aws_sns_topic.notification_topic.arn}"]
insufficient_data_actions = []
lifecycle {
create_before_destroy = true
}
}
2 ответа
При использовании RDS Aurora я рекомендую использовать роли для отслеживания соединений как на пишущем, так и на читающем устройстве. У этого есть два преимущества:
- Вы можете индивидуально отслеживать и устанавливать будильники для писателя и читателя
- Вам не нужно обновлять монитор или сигналы тревоги, если ваш экземпляр заменен, потому что каждый экземпляр будет иметь ту или иную роль.
Обратите внимание, что если у вас несколько читателей, роль читателя усредняет их.
Я знаю, что это очень старый, но DBClusterIdentifier не может принимать регулярные выражения, поэтому, к сожалению, вы должны иметь тревогу за экземпляр. Это отстой.
По этой причине мы не используем CloudWatch... мы используем Datadog и / или Newrelic, в зависимости от нашего варианта использования.