

# 检查 Aurora 集群和实例的正常运行时间
<a name="USER_Reboot.Uptime"></a>

 您可以检查和监控 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
```