

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 监控 Amazon DocumentDB 无服务器
<a name="docdb-serverless-monitoring"></a>

要了解有关在 Amazon DocumentDB 中监控的更多信息，请参阅 [监控 Amazon DocumentDB](monitoring_docdb.md)。

**Topics**
+ [内存不足：incompatible-parameters 状态](#w2aac43c27b7)
+ [DocumentDB 无服务器的亚马逊 CloudWatch 指标](#w2aac43c27b9)
+ [使用性能详情监控 DocumentDB 无服务器性能](#w2aac43c27c11)

## 内存不足：incompatible-parameters 状态
<a name="w2aac43c27b7"></a>

如果您的其中一个无服务器实例持续达到最大容量的限制，Amazon DocumentDB 会通过将实例设置为 incompatible-parameters 状态来表明这种状况。有关更多信息，请参阅 [避免内存不足错误](docdb-serverless-scaling-config.md#docdb-serverless-scaling-mem-errors)。

## DocumentDB 无服务器的亚马逊 CloudWatch 指标
<a name="w2aac43c27b9"></a>

要详细了解如何使用亚马逊 Docu CloudWatch mentDB，请参阅。[使用以下方式监控亚马逊 DocumentDB CloudWatch](cloud_watch.md)

您可以在中查看您的无服务器实例 CloudWatch ，通过该`ServerlessDatabaseCapacity`指标监控每个实例消耗的容量。您还可以监控所有标准的 DocumentDB CloudWatch 指标，例如`DatabaseConnections`和查询。有关您可以监控的 Amazon DocumentDB CloudWatch 指标的完整列表，请参阅。[使用以下方式监控亚马逊 DocumentDB CloudWatch](cloud_watch.md)监控以下 CloudWatch 实例级指标非常重要，有助于您了解您的 DocumentDB 无服务器实例是如何向上和向下扩展的。所有这些指标每秒计算一次。这样，您就可以监控无服务器实例的当前状态。您可以设置警报，以便在任何无服务器实例接近与容量相关的指标阈值时通知您。您可以确定最小和最大容量设置是否合适，或者是否需要调整它们。您可以确定将精力集中在哪方面来优化数据库的效率。
+ **`ServerlessDatabaseCapacity`**：作为实例级指标，会报告当前实例容量所代表的 DCU 数量。作为集群级指标，它代表集群中所有 DocumentDB 无服务器实例的 `ServerlessDatabaseCapacity` 值的平均值。
+ **`DCUUtilization.`**：此指标是 DocumentDB 无服务器中的新指标。此值以百分比表示。其计算方法是 `ServerlessDatabaseCapacity` 指标的值除以集群的最大 DCU 值。解读此指标并采取行动时考虑以下准则：
  + 如果此指标接近值 `100.0`，则实例已扩展到能达到的最大容量。考虑增大集群的最大 DCU 设置。这样，写入器和读取器实例都可以扩展到更高的容量。
  + 假设只读工作负载导致读取器实例的 `DCUUtilization` 接近 `100.0`，而写入器实例未接近其最大容量。在这种情况下，请考虑向集群添加额外的读取器实例。这样，您可以将工作负载的只读部分分散到更多实例上，从而减少每个读取器实例的负载。
  + 假设您正在运行生产应用程序，其中性能和可扩展性是主要考虑因素。在这种情况下，您可以将集群的最大 DCU 值设置为较高的数字。您的目标是让 `DCUUtilization` 指标始终低于 100.0。使用较高的最大 DCU 值，您可以确信有足够的空间来应对数据库活动中出现的意外高峰。您只需为实际使用的数据库容量付费。
+ **`CPUUtilization`**：该指标在 DocumentDB 无服务器中的解读不同于预置实例中的解读。对于 DocumentDB 无服务器，此值是一个百分比，其计算方法是当前使用的 CPU 量除以在集群的最大 DCU 值基础上提供的 CPU 容量。当实例持续使用其 CPU 容量的很大一部分时，Amazon DocumentDB 会自动监控此值并扩展无服务器实例。

  如果此指标接近值 `100.0`，则该实例已达到其最大 CPU 容量。考虑增大集群的最大 DCU 设置。如果读取器实例上的这个指标接近值 `100.0`，请考虑向集群添加额外的读取器实例。这样，您可以将工作负载的只读部分分散到更多实例上，从而减少每个读取器实例的负载。
+ **`FreeableMemory`**：此值表示当 DocumentDB 无服务器实例已扩展到其最大容量时，提供的未使用内存量。对于当前容量低于最大容量的每个 DCU，此值增加大约 2GiB。因此，在实例扩展到其可以达到的最大值之前，此指标不会接近零。

  如果此指标接近值零，则实例已扩展到其可以达到的最大值，并且已接近其可用内存的限制。考虑增大集群的最大 DCU 设置。如果读取器实例上的这个指标接近值零，请考虑向集群添加额外的读取器实例。这样，工作负载的只读部分可以分散到更多实例上，从而减少每个读取器实例的内存使用。
+ **`TempStorageIops`**：在连接到实例的本地存储上完成的 IOPS 数。它包括读取和写入的 IOPS。此指标表示计数，每秒测量一次。这是 DocumentDB 无服务器的新指标。有关更多信息，请参阅 [使用以下方式监控亚马逊 DocumentDB CloudWatch](cloud_watch.md)。
+ **`TempStorageThroughput`**：与实例关联的本地存储的传入和传出数据量。此指标表示字节数，每秒测量一次。这是 DocumentDB 无服务器的新指标。有关更多信息，请参阅 [使用以下方式监控亚马逊 DocumentDB CloudWatch](cloud_watch.md)。

通常情况下，DocumentDB 无服务器实例的大多数扩展是因内存使用和 CPU 活动而引起。`TempStorageIops` 和 `TempStorageThroughput` 指标可以帮助您诊断实例与本地存储设备之间传输的网络活动导致意外容量增加的罕见情况。要监控其他网络活动，您可以使用以下现有指标：
+ `NetworkReceiveThroughput`
+ `NetworkThroughput`
+ `NetworkTransmitThroughput`
+ `StorageNetworkReceiveThroughput`
+ `StorageNetworkThroughput`
+ `StorageNetworkTransmitThroughput`

### DocumentDB 无服务器 CloudWatch 指标如何应用于您的账单 AWS
<a name="w2aac43c27b9c13"></a>

 AWS 账单上的 DocumentDB 无服务器费用是根据您可以监控的相同`ServerlessDatabaseCapacity`指标计算的。如果您仅使用了部分小时 DocumentDB 无服务器容量，则计费机制可能与该指标的计算 CloudWatch 平均值不同。如果系统问题导致 CloudWatch 指标在短时间内不可用，情况也可能有所不同。因此，你在账单 DCU-hours 上看到的值可能会与你自己根据`ServerlessDatabaseCapacity`平均值计算该数字时略有不同。

### DocumentDB 无服务器指标的 Amazon CloudWatch CLI 命令示例
<a name="w2aac43c27b9c15"></a>

以下 AWS CLI 示例演示了如何监控与 DocumentDB 无服务器相关的最重要 CloudWatch 指标。在每种情况下，请将 `--dimensions` 参数的 `Value=` 字符串替换为您自己的 DocumentDB 无服务器实例的标识符。

以下 Linux 示例显示了实例的最小容量、最大容量和平均容量值，在一小时内每 10 分钟测量一次。Linux 日期命令指定相对于当前日期和时间的开始时间和结束时间。`--query` 参数中的 `sort_by` 函数根据 `Timestamp` 字段按时间顺序对结果进行排序。

```
aws cloudwatch get-metric-statistics \
    --metric-name "ServerlessDatabaseCapacity" \
    --start-time "$(date -d '1 hour ago')" \
    --end-time "$(date -d 'now')" \
    --period 600 \
    --namespace "AWS/DocDB" \
    --statistics Minimum Maximum Average \
    --dimensions Name=DBInstanceIdentifier,Value={{my_instance{{}}}} \
    --query 'sort_by(Datapoints[*].{min:Minimum,max:Maximum,avg:Average,ts:Timestamp},&ts)' \
    --output table
```

以下 Linux 示例演示了监控集群中实例的容量。将衡量实例的最小容量、最大容量和平均容量利用率。在三个小时内，每小时进行一次测量。这些示例使用 `DCUUtilization` 指标表示 DCU 上限的百分比，而不是使用 `ServerlessDatabaseCapacity` 表示固定数量的 DCU。这样，您就不需要知道容量范围内的最小和最大 DCU 值的实际数字。您可以看到 0 到 100 之间的百分比。

```
aws cloudwatch get-metric-statistics \
    --metric-name "DCUUtilization" \
    --start-time "$(date -d '3 hours ago')" \
    --end-time "$(date -d 'now')" \
    --period 3600 \
    --namespace "AWS/DocDB" \
    --statistics Minimum Maximum Average \
    --dimensions Name=DBInstanceIdentifier,Value={{my_instance}} \
    --query 'sort_by(Datapoints[*].{min:Minimum,max:Maximum,avg:Average,ts:Timestamp},&ts)' \
    --output table
```

下面的 Linux 示例执行的测量与之前的示例类似。在本例中，测量值针对 `CPUUtilization` 指标。在 1 小时内，每 10 分钟进行一次测量。这些数字表示已使用的可用 CPU 的百分比，基于实例的最大容量设置中可用的 CPU 资源。

```
aws cloudwatch get-metric-statistics \
    --metric-name "CPUUtilization" \
    --start-time "$(date -d '1 hour ago')" \
    --end-time "$(date -d 'now')" \
    --period 600 \
    --namespace "AWS/DocDB" \
    --statistics Minimum Maximum Average \
    --dimensions Name=DBInstanceIdentifier,Value={{my_instance}} \
    --query 'sort_by(Datapoints[*].{min:Minimum,max:Maximum,avg:Average,ts:Timestamp},&ts)' \
    --output table
```

下面的 Linux 示例执行的测量与之前的示例类似。在本例中，测量值针对 `FreeableMemory` 指标。在 1 小时内，每 10 分钟进行一次测量。

```
aws cloudwatch get-metric-statistics \
    --metric-name "FreeableMemory" \
    --start-time "$(date -d '1 hour ago')" \
    --end-time "$(date -d 'now')" \
    --period 600 \
    --namespace "AWS/DocDB" \
    --statistics Minimum Maximum Average \
    --dimensions Name=DBInstanceIdentifier,Value={{my_instance}} \
    --query 'sort_by(Datapoints[*].{min:Minimum,max:Maximum,avg:Average,ts:Timestamp},&ts)' \
    --output table
```

## 使用性能详情监控 DocumentDB 无服务器性能
<a name="w2aac43c27c11"></a>

您可以使用性能详情来监控 DocumentDB 无服务器实例的性能。有关性能详情的程序，请参阅[使用 Performance Insights 进行监控](performance-insights.md)。

以下新性能详情计数器适用于 DocumentDB 无服务器实例：
+ **`os.general.serverlessDBCapacity`**：实例的当前容量，以 DCU 为单位。该值对应于实例的`ServerlessDatabaseCapacity` CloudWatch 指标。
+ **`os.general.dcuUtilization`**：当前容量占最大配置容量的百分比。该值对应于实例的`DCUUtilization` CloudWatch 指标。
+ **`os.general.maxConfiguredDcu`**：您为此 DocumentDB 无服务器实例配置的最大容量。以 DCU 为单位。
+ **`os.general.minConfiguredDcu`**：您为此 DocumentDB 无服务器实例配置的最小容量。以 DCU 为单位。

有关性能详情计数器的完整列表，请参阅 [Performance Insights 的计数器指标](performance-insights-counter-metrics.md)。

在性能详情中为 DocumentDB 无服务器实例显示 vCPU 值时，这些值表示基于实例的 DCU 值的估计值。默认时间间隔为 1 分钟，任何小数 vCPU 值将向上舍入到最接近的整数。对于更长的时间间隔，显示的 vCPU 值是每分钟的整数 vCPU 值的平均值。