检查 Aurora 集群和实例的正常运行时间
您可以检查和监控 Aurora 集群中每个数据库实例自上次重启以来的时间长度。Amazon CloudWatch 指标 EngineUptime
会报告自上次启动数据库实例以来的秒数。您可以在某个时间点检查此指标,以了解数据库实例的正常运行时间。您还可以随着时间的推移监控此指标,以检测实例的重启时间。
您还可以在集群级别检查 EngineUptime
指标。Minimum
和 Maximum
会维度报告集群中所有数据库实例的最小和最大的正常运行时间值。要检查集群中的读取器实例最近的重启时间或出于其他原因重启的时间,请使用 Minimum
维度监控集群级指标。要在不重启的情况下检查集群中运行时间最长的实例,请使用 Maximum
维度监控集群级指标。例如,您可能需要确认在进行配置更改后,集群中的所有数据库实例都已重启。
提示
对于长期监控,我们建议监控单个实例的 EngineUptime
指标,而不是在集群级进行监控。新数据库实例添加到集群后,集群级 EngineUptime
指标将设置为零。此类集群更改可以作为维护和扩缩操作(例如由 Auto Scaling 执行的操作)的一部分。
以下 CLI 示例显示了如何检查集群中写入器和读取器实例的 EngineUptime
指标。这些示例使用名为 tpch100g
的集群。此集群有一个写入器数据库实例 instance-1234
。它还有两个读取器数据库实例(instance-7448
和 instance-6305
)。
首先,reboot-db-instance
命令会重启其中一个读取器实例。wait
命令会等到实例完成重启。
$ aws rds reboot-db-instance --db-instance-identifier instance-6305 { "DBInstance": { "DBInstanceIdentifier": "instance-6305", "DBInstanceStatus": "rebooting", ... $ aws rds wait db-instance-available --db-instance-id instance-6305
CloudWatch get-metric-statistics
命令每隔一分钟便会检查过去五分钟内的 EngineUptime
指标。instance-6305
实例的正常运行时间将重置为零并再次开始向上计数。以下适用于 Linux 的 AWS CLI 示例使用 $()
变量替换在 CLI 命令中插入适当的时间戳。它还使用 Linux sort
命令按照指标收集时间对输出进行排序。该时间戳值是每行输出中的第三个字段。
$ aws cloudwatch get-metric-statistics --metric-name "EngineUptime" \ --start-time "$(date -d '5 minutes ago')" --end-time "$(date -d 'now')" \ --period 60 --namespace "AWS/RDS" --statistics Maximum \ --dimensions Name=DBInstanceIdentifier,Value=instance-6305 --output text \ | sort -k 3 EngineUptime DATAPOINTS 231.0 2021-03-16T18:19:00+00:00 Seconds DATAPOINTS 291.0 2021-03-16T18:20:00+00:00 Seconds DATAPOINTS 351.0 2021-03-16T18:21:00+00:00 Seconds DATAPOINTS 411.0 2021-03-16T18:22:00+00:00 Seconds DATAPOINTS 471.0 2021-03-16T18:23:00+00:00 Seconds
由于集群中的一个实例已重启,因此集群的最短正常运行时间将重置为零。由于集群中至少有一个数据库实例仍然可用,因此集群的最长正常运行时间不会重置。
$ aws cloudwatch get-metric-statistics --metric-name "EngineUptime" \ --start-time "$(date -d '5 minutes ago')" --end-time "$(date -d 'now')" \ --period 60 --namespace "AWS/RDS" --statistics Minimum \ --dimensions Name=DBClusterIdentifier,Value=tpch100g --output text \ | sort -k 3 EngineUptime DATAPOINTS 63099.0 2021-03-16T18:12:00+00:00 Seconds DATAPOINTS 63159.0 2021-03-16T18:13:00+00:00 Seconds DATAPOINTS 63219.0 2021-03-16T18:14:00+00:00 Seconds DATAPOINTS 63279.0 2021-03-16T18:15:00+00:00 Seconds DATAPOINTS 51.0 2021-03-16T18:16:00+00:00 Seconds $ aws cloudwatch get-metric-statistics --metric-name "EngineUptime" \ --start-time "$(date -d '5 minutes ago')" --end-time "$(date -d 'now')" \ --period 60 --namespace "AWS/RDS" --statistics Maximum \ --dimensions Name=DBClusterIdentifier,Value=tpch100g --output text \ | sort -k 3 EngineUptime DATAPOINTS 63389.0 2021-03-16T18:16:00+00:00 Seconds DATAPOINTS 63449.0 2021-03-16T18:17:00+00:00 Seconds DATAPOINTS 63509.0 2021-03-16T18:18:00+00:00 Seconds DATAPOINTS 63569.0 2021-03-16T18:19:00+00:00 Seconds DATAPOINTS 63629.0 2021-03-16T18:20:00+00:00 Seconds
之后另一个 reboot-db-instance
命令将重启集群的写入器实例。另一个 wait
命令会暂停,直至写入器实例完成重启。
$ aws rds reboot-db-instance --db-instance-identifier instance-1234 { "DBInstanceIdentifier": "instance-1234", "DBInstanceStatus": "rebooting", ... $ aws rds wait db-instance-available --db-instance-id instance-1234
现在,写入器实例的 EngineUptime
指标显示实例 instance-1234
最近已重启。读取器实例 instance-6305
也会与写入器实例一起自动重启。此集群运行 Aurora MySQL 2.09,因此在写入器实例重启时读取器实例不会保持运行状态。
$ aws cloudwatch get-metric-statistics --metric-name "EngineUptime" \ --start-time "$(date -d '5 minutes ago')" --end-time "$(date -d 'now')" \ --period 60 --namespace "AWS/RDS" --statistics Maximum \ --dimensions Name=DBInstanceIdentifier,Value=instance-1234 --output text \ | sort -k 3 EngineUptime DATAPOINTS 63749.0 2021-03-16T18:22:00+00:00 Seconds DATAPOINTS 63809.0 2021-03-16T18:23:00+00:00 Seconds DATAPOINTS 63869.0 2021-03-16T18:24:00+00:00 Seconds DATAPOINTS 41.0 2021-03-16T18:25:00+00:00 Seconds DATAPOINTS 101.0 2021-03-16T18:26:00+00:00 Seconds $ aws cloudwatch get-metric-statistics --metric-name "EngineUptime" \ --start-time "$(date -d '5 minutes ago')" --end-time "$(date -d 'now')" \ --period 60 --namespace "AWS/RDS" --statistics Maximum \ --dimensions Name=DBInstanceIdentifier,Value=instance-6305 --output text \ | sort -k 3 EngineUptime DATAPOINTS 411.0 2021-03-16T18:22:00+00:00 Seconds DATAPOINTS 471.0 2021-03-16T18:23:00+00:00 Seconds DATAPOINTS 531.0 2021-03-16T18:24:00+00:00 Seconds DATAPOINTS 49.0 2021-03-16T18:26:00+00:00 Seconds