Создать сигнал тревоги 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 я рекомендую использовать роли для отслеживания соединений как на пишущем, так и на читающем устройстве. У этого есть два преимущества:

  1. Вы можете индивидуально отслеживать и устанавливать будильники для писателя и читателя
  2. Вам не нужно обновлять монитор или сигналы тревоги, если ваш экземпляр заменен, потому что каждый экземпляр будет иметь ту или иную роль.

Обратите внимание, что если у вас несколько читателей, роль читателя усредняет их.

Метрики Cloudwatch с использованием ролей RDS в AWS

Я знаю, что это очень старый, но DBClusterIdentifier не может принимать регулярные выражения, поэтому, к сожалению, вы должны иметь тревогу за экземпляр. Это отстой.

По этой причине мы не используем CloudWatch... мы используем Datadog и / или Newrelic, в зависимости от нашего варианта использования.

Другие вопросы по тегам