首页 > 解决方案 > 在 RDS 集群中的所有实例上创建 CloudWatch 警报

问题描述

我有一个带有 2 个实例的 RDS Aurora 集群,一个读取器和一个写入器。

DatabaseConnections我使用维度创建了 CloudWatch 警报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
  }
}

标签: amazon-web-servicesterraformamazon-cloudwatch

解决方案


我建议在使用 RDS Aurora 时使用角色来监控写入器和读取器上的连接。这样做有两个好处:

  1. 您可以单独跟踪和设置作家和读者的警报
  2. 如果您的实例被替换,您不必更新监视器或警报,因为每个实例都将具有一个或另一个角色。

请注意,如果您有多个读者,则读者角色是平均他们。

在 AWS 中使用 RDS 角色的 Cloudwatch 指标


推荐阅读