

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

# 监控 AWS DMS 任务
<a name="CHAP_Monitoring"></a>

监控是维护 AWS 解决方案的可靠性、可用性和性能的重要组成部分。 AWS DMS 您应该从 AWS 解决方案的所有部分收集监控数据，以便在出现多点故障时可以更轻松地进行调试。 AWS 提供了多种用于监控 AWS DMS 任务和资源以及应对潜在事件的工具：

**AWS DMS 事件和通知**  
AWS DMS 使用亚马逊简单通知服务 (Amazon SNS) Simple Notification Servic AWS DMS e 在事件发生时提供通知，例如创建或删除复制实例。 AWS DMS 将事件分组为你可以订阅的类别，这样当该类别的事件发生时，你就可以收到通知。例如，如果您订阅了指定复制实例的“创建”类别，则只要发生了与创建相关的事件影响到您的复制实例，您就会收到通知。您可以采用某一 AWS 地区的 Amazon SNS 支持的任何形式处理这些通知，例如电子邮件、短信或对 HTTP 终端节点的调用。有关更多信息，请参阅 [在中处理亚马逊 SNS 事件和通知 AWS Database Migration Service](CHAP_Events.md)。

**任务状态**  
您可以查看任务状态和监控任务的控制表，以便监控任务的进度。任务状态表示 AWS DMS 任务及其关联资源的状况。它包含此类指示，如同正在创建、启动、运行或停止任务一样。此外，它还包含任务正在迁移的表的当前状态，例如，表已开始或正在进行完全加载时，并包含表已执行的插入、删除和更新次数等详细信息。有关监控任务和任务资源条件的更多信息，请参阅 [任务状态](#CHAP_Tasks.Status) 和 [任务期间的表状态](#CHAP_Tasks.CustomizingTasks.TableState)。有关控制表的更多信息，请参阅[控制表任务设置](CHAP_Tasks.CustomizingTasks.TaskSettings.ControlTable.md)。

**Amazon CloudWatch 警报和日志**  
使用 Amazon CloudWatch 警报，您可以监视您指定的时间段内的一个或多个任务指标。如果指标超过给定阈值，则会向 Amazon SNS 主题发送通知。 CloudWatch 警报不会调用操作，因为它们处于特定状态。相反，状态必须已发生变化并维持了指定的时间段。 AWS DMS 还 CloudWatch用于在迁移过程中记录任务信息。您可以使用 AWS CLI 或 AWS DMS API 来查看有关任务日志的信息。有关 CloudWatch 与一起使用的更多信息 AWS DMS，请参阅[使用 Amazon 监控复制任务 CloudWatch](#CHAP_Monitoring.CloudWatch)。有关监控 AWS DMS 指标的更多信息，请参阅[AWS Database Migration Service 指标](#CHAP_Monitoring.Metrics)。有关使用 AWS DMS 任务日志的更多信息，请参阅[查看和管理 AWS DMS 任务日志](#CHAP_Monitoring.ManagingLogs)。

**Time Travel 日志**  
要记录和调试复制任务，可以使用 T AWS DMS ime Travel。在此方法中，您可以使用 Amazon S3 来存储日志，并使用加密密钥对其进行加密。您可以使用日期时间筛选器检索 S3 日志，然后根据需要查看、下载日志以及对日志进行模糊处理。由此，您可以安全地“回到过去”来调查数据库活动。  
您可以将 Time Travel 与 DMS 支持的 PostgreSQL 源端点以及 DMS 支持的 PostgreSQL 和 MySQL 目标端点配合使用。您只能为完全加载和 CDC 任务以及仅 CDC 任务启用 Time Travel。要打开 Time Travel 或修改任何现有的 Time Travel 设置，请确保您的任务已停止。  
有关 Time Travel 日志的更多信息，请参阅[Time Travel 任务设置](CHAP_Tasks.CustomizingTasks.TaskSettings.TimeTravel.md)。有关使用 Time Travel 日志的最佳实践，请参阅[使用 Time Travel 对复制任务进行故障排除](CHAP_BestPractices.md#CHAP_BestPractices.TimeTravel)。

**AWS CloudTrail 日志**  
AWS DMS 与 AWS CloudTrail一项服务集成，该服务可记录用户、IAM 角色或中的 AWS 服务所采取的操作 AWS DMS。 CloudTrail将所有 API 调用捕获 AWS DMS 为事件，包括来自 AWS DMS 控制台的调用和对 AWS DMS API 操作的代码调用。如果您创建了跟踪，则可以允许将 CloudTrail 事件持续传输到 Amazon S3 存储桶，包括的事件 AWS DMS。如果您未配置跟踪，您仍然可以在 CloudTrail 控制台的 “事件**历史记录” 中查看最新的事件**。使用收集的信息 CloudTrail，您可以确定向哪个请求发出 AWS DMS、发出请求的 IP 地址、谁发出了请求、何时发出请求以及其他详细信息。有关更多信息，请参阅 [使用记录 AWS DMS API 调用 AWS CloudTrail](#logging-using-cloudtrail)。

**数据库日志**  
您可以使用数据库服务的、或 API 来查看 AWS 管理控制台 AWS CLI、下载和监视任务端点的 AWS 数据库日志。有关更多信息，请参阅 [AWS 文档](https://docs.aws.amazon.com/index.html?nc2=h_ql_doc_do_v)中的数据库服务文档。

有关更多信息，请参阅以下主题。

**Topics**
+ [任务状态](#CHAP_Tasks.Status)
+ [任务期间的表状态](#CHAP_Tasks.CustomizingTasks.TableState)
+ [使用 Amazon 监控复制任务 CloudWatch](#CHAP_Monitoring.CloudWatch)
+ [AWS Database Migration Service 指标](#CHAP_Monitoring.Metrics)
+ [查看和管理 AWS DMS 任务日志](#CHAP_Monitoring.ManagingLogs)
+ [使用记录 AWS DMS API 调用 AWS CloudTrail](#logging-using-cloudtrail)
+ [AWS DMS 上下文记录](#datarep_Monitoring_ContextLogging)
+ [增强型监控控制面板](enhanced-monitoring-dashboard.md)
+ [查看 AWS DMS 事件](CHAP_Monitoring.View.dms.events.md)

## 任务状态
<a name="CHAP_Tasks.Status"></a>

任务状态指示任务的情况。下表显示了任务可能具有的状态：


| 任务状态 | 说明 | 
| --- | --- | 
|   **Creating**   |  AWS DMS 正在创建任务。  | 
|   **正在运行**   |  任务正在执行指定的迁移工作。  | 
|   **Stopped**   |  任务已停止。  | 
|   **Stopping**   |  正在停止任务。这通常表明任务中有用户干预。  | 
|   **Deleting**   |  正在删除任务，通常源于用户的干预请求。  | 
|   **已失败**   |  任务已失败。有关更多信息，请参阅任务日志文件。  | 
|   **错误**   |  任务因错误而停止。在**概述**选项卡的最后一条失败消息部分中，提供了任务错误的简要描述。  | 
|   **运行时出错**   |  任务正在运行，状态为出错。这通常表示任务中的一个或多个表无法迁移。该任务继续根据选择规则加载其他表。  | 
|   **Starting**   |  任务正在连接到复制实例以及源和目标终端节点。应用所有筛选器和转换。  | 
|   **就绪**   |  任务已准备好运行。此状态通常在“creating”状态之后。  | 
|   **Modifying**   |  正在修改任务，通常是由于修改了任务设置的用户操作造成。  | 
|   **正在移动**   |  任务正在移动到另一个复制实例。复制将保持此状态，直到移动完成。复制任务正在移动时，唯一允许执行的操作是删除任务。  | 
|   **失败的移动**   |  任务移动由于任何原因而失败，例如目标复制实例上没有足够的存储空间。当复制任务处于这种状态时，可以启动、修改、移动或删除该任务。  | 
|   **测试**   |  正在测试为此任务指定的数据库迁移 [StartReplicationTaskAssessmentRun](https://docs.aws.amazon.com/dms/latest/APIReference/API_StartReplicationTaskAssessmentRun.html)，以响应运行或[StartReplicationTaskAssessment](https://docs.aws.amazon.com/dms/latest/APIReference/API_StartReplicationTaskAssessment.html)操作。  | 

任务状态栏提供了任务进度的估计值。此估计值的质量取决于源数据库的表统计数据的质量；表统计数据的质量越好，估计值就越准确。对于只有一个表而且该表没有估算行统计数据的任务，我们无法提供任何类型的完成百分比估算值。在此情况下，可使用任务状态和加载行的指示来确认任务是否确实在运行且取得进展。

请注意，对于“上次更新时间”列，DMS 控制台仅指示 AWS DMS 上次更新表的表统计数据记录的时间。它不指示上次更新表的时间。

除了使用 DMS 控制台外，您还可以使用 [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html) 中的 `aws dms describe-replication-tasks` 命令，*输出*当前复制任务的描述，包括任务状态，如以下示例所示。

```
{
    "ReplicationTasks": [
        {
            "ReplicationTaskIdentifier": "moveit2",
            "SourceEndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:6GGI6YPWWGAYUVLKIB732KEVWA",
            "TargetEndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:EOM4SFKCZEYHZBFGAGZT3QEC5U",
            "ReplicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:T3OM7OUB5NM2LCVZF7JPGJRNUE",
            "MigrationType": "full-load",
            "TableMappings": ...output omitted... ,
            "ReplicationTaskSettings": ...output omitted... ,
            "Status": "stopped",
            "StopReason": "Stop Reason FULL_LOAD_ONLY_FINISHED",
            "ReplicationTaskCreationDate": 1590524772.505,
            "ReplicationTaskStartDate": 1590619805.212,
            "ReplicationTaskArn": "arn:aws:dms:us-east-1:123456789012:task:K55IUCGBASJS5VHZJIINA45FII",
            "ReplicationTaskStats": {
                "FullLoadProgressPercent": 100,
                "ElapsedTimeMillis": 0,
                "TablesLoaded": 0,
                "TablesLoading": 0,
                "TablesQueued": 0,
                "TablesErrored": 0,
                "FreshStartDate": 1590619811.528,
                "StartDate": 1590619811.528,
                "StopDate": 1590619842.068
            }
        }
    ]
}
```

## 任务期间的表状态
<a name="CHAP_Tasks.CustomizingTasks.TableState"></a>

迁移期间， AWS DMS 控制台会更新有关表状态的信息。下表显示了可能的状态值：

![\[AWS 数据库 Migration Service 复制实例\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/datarep-TableState.png)



| 州 | 说明 | 
| --- | --- | 
|   **表不存在**   |  AWS DMS 无法在源端点上找到该表。  | 
|   **加载前**   |  完全加载过程已启用，但尚未启动。  | 
|   **完全加载**   |  完全加载过程正在进行。  | 
|   **表已完成**   |  完全加载已完成。  | 
|   **表已取消**   |  已取消加载表。  | 
|   **表错误**   |  加载表时出错。  | 

## 使用 Amazon 监控复制任务 CloudWatch
<a name="CHAP_Monitoring.CloudWatch"></a>

您可以使用 Amazon CloudWatch 警报或事件来更密切地跟踪您的迁移。有关亚马逊的更多信息 CloudWatch，请参阅[什么是亚马逊 CloudWatch、亚马逊 CloudWatch 事件和亚马逊 CloudWatch 日志？](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatch.html) 在《亚马逊 CloudWatch 用户指南》中。请注意，使用Amazon需要付费 CloudWatch。

如果您的复制任务未创建 CloudWatch 日志，请参阅疑难解答指南[AWS DMS 不创建 CloudWatch 日志](CHAP_Troubleshooting.md#CHAP_Troubleshooting.General.CWL)中的。

 AWS DMS 控制台显示每项任务的基本 CloudWatch 统计信息，包括任务状态、完成百分比、已用时间和表格统计信息，如下所示。选择复制任务，然后选择**CloudWatch 指标**选项卡。

要查看和修改 CloudWatch 任务日志设置，请选择**修改任务日志**。有关更多信息，请参阅 [日志记录任务设置](CHAP_Tasks.CustomizingTasks.TaskSettings.Logging.md)。

![\[AWS 分布式消息系统监控\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/datarep-monitoring1.png)


**当您选择表统计信息选项卡时， AWS DMS 控制台会显示每个表的性能统计信息，包括插入、删除和更新的次数。**

![\[AWS 分布式消息系统监控\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/datarep-monitoring3.png)


此外，如果您从 “复制实例” 页面中选择**复制实例**，则可以通过选择 “指标” 选项卡来查看该实例的性能**CloudWatch 指标**。

![\[AWS 分布式消息系统监控\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/datarep-monitoring4.png)


## AWS Database Migration Service 指标
<a name="CHAP_Monitoring.Metrics"></a>

AWS DMS 提供以下方面的统计信息：
+ **主机指标**-由 Amazon 提供的复制主机的性能和利用率统计数据 CloudWatch。有关可用指标的完整列表，请参阅[复制实例指标](#CHAP_Monitoring.Metrics.CloudWatch)。
+ **复制任务指标** – 复制任务的统计数据，包括传入和已提交更改，以及复制主机与源数据库和目标数据库之间的延迟。有关可用指标的完整列表，请参阅[复制任务指标](#CHAP_Monitoring.Metrics.Task)。
+ **表指标** – 迁移过程中的表的统计数据，包括插入数、更新数、删除数和完成的 DDL 语句。

任务指标划分为复制主机和源端点的统计数据，以及复制主机和目标端点的统计数据。通过比较这些相关的统计数据，可以使用 “**CDCLatency源**” 和 “**CDCLatency目标**” 来确定任务延迟的原因。例如，如果**CDCLatency源**值与**CDCLatency目标**值几乎相同，则应先检查源端。但是，如果**CDCLatency目标**高于**CDCLatency源**端，则应重点检查目标端的延迟。

任务指标值受您源数据库上当前活动的影响。例如，如果交易已开始但尚未提交，则**CDCLatency来源**指标将继续增长，直到该交易已提交。

对于复制实例，该**FreeableMemory**指标需要澄清。FreeableMemory 并不指示实际的可用内存。它是当前使用的可释放内存 (以用于其他用途)；它是复制实例上使用的缓冲区和缓存的组合。

虽然该**FreeableMemory**指标并不能反映实际的可用内存，但**FreeableMemory**和**SwapUsage**指标的组合可以指示复制实例是否过载。

请监控这两个指标是否出现以下情况：
+ 该**FreeableMemory**指标接近零。
+ 该**SwapUsage**指标会增加或波动。

如果出现上述任一情况，则表示应考虑移动到更大的复制实例。还应考虑减少在复制实例上运行的任务数量和类型。完全加载任务所需的内存比仅复制更改的任务需要的内存多。

要粗略估计 AWS DMS 迁移任务的实际内存需求，可以使用以下参数。

**LOB 列**  
迁移范围内每个表中平均的 LOB 列数。

**可并行加载的表数量上限**  
在一个任务中并行 AWS DMS 加载的最大表数。  
默认值是 8。

**LOB 块大小**  
 AWS DMS 用于将数据复制到目标数据库的 LOB 区块的大小，以千字节为单位。

**完全加载时的提交率**  
 AWS DMS 可以并行传输的最大记录数。  
默认值是 10000。

**LOB 大小**  
单个 LOB 的最大大小，以 KB 为单位。

**批量数组大小**  
端点驱动程序提取或处理的最大行数。此值取决于驱动程序设置。  
默认值是 1000。

确定这些值后，您可以使用以下方法之一来估算迁移任务所需的内存量。这些方法取决于您在迁移任务中为 **LOB 列设置**选择的选项。
+  对于**完整 LOB 模式**，请使用以下公式。

  `Required memory = (LOB columns) * (Maximum number of tables to load in parallel) * (LOB chunk size) * (Commit rate during full load)`

  举一个例子，您的源表平均包含 2 个 LOB 列，而 LOB 块的大小为 64 KB。如果您使用 `Maximum number of tables to load in parallel` 和 `Commit rate during full load` 的默认值，则任务所需的内存量如下所示。

  `Required memory = 2 * 8 * 64 * 10,000 = 10,240,000 KB`
**注意**  
要降低**满负荷期间提交率**的值，请打开 AWS DMS 控制台，选择**数据库迁移任务**，然后创建或修改任务。展开**高级设置**，然后输入**完全加载时的提交率**的值。
+  对于**受限 LOB 模式**，请使用以下公式。

  `Required memory = (LOB columns) * (Maximum number of tables to load in parallel) * (LOB size) * (Bulk array size)`

  举一个例子，您的源表平均包含 2 个 LOB 列，而单个 LOB 的最大大小为 4096 KB。如果您使用 `Maximum number of tables to load in parallel` 和 `Bulk array size` 的默认值，则任务所需的内存量如下所示。

  `Required memory = 2 * 8 * 4,096 * 1,000 = 65,536,000 KB`

为了 AWS DMS 以最佳方式执行转换，转换发生时必须有 CPU 可用。CPU 过载和没有足够的 CPU 资源可能会导致迁移速度缓慢。 AWS DMS 可能占用 CPU 密集型，尤其是在执行异构迁移和复制（例如从 Oracle 迁移到 PostgreSQL）时。

### 复制实例指标
<a name="CHAP_Monitoring.Metrics.CloudWatch"></a>

复制实例监控包括以下统计数据的 Amazon CloudWatch 指标。


|  指标  |  说明  | 
| --- | --- | 
| AvailableMemory |  估计可用于启动新应用程序的内存量（没有交换）。有关更多信息，请参阅 [Linux man-pages](https://man7.org/linux/man-pages/man5/proc.5.html) 的 `/proc/memInfo` 一节中的 `MemAvailable` 值。 单位：字节  | 
| CPUAllocated |  为任务分配的 CPU 最大百分比（0 表示没有限制）。 AWS DMS 将此指标与 CloudWatch 控制台`ReplicationTaskIdentifier`中的`ReplicationInstanceIdentifer`和的组合维度相提并论。使用 `ReplicationInstanceIdentifier, ReplicationTaskIdentifier` 类别查看此指标。 单位：百分比  | 
| CPUUtilization |  当前实例上正在使用的已分配 vCPU（虚拟 CPU）的百分比。  单位：百分比   | 
| DiskQueueDepth |  等待访问磁盘的未完成 read/write 请求 (I/O) 的数量。  单位：计数   | 
| FreeStorageSpace |  可用存储空间的大小。 单位：字节  | 
| FreeMemory |  可供应用程序、页面缓存和内核自身数据结构使用的物理内存量。有关更多信息，请参阅 [Linux man-pages](https://man7.org/linux/man-pages/man5/proc.5.html) 的 `/proc/memInfo` 一节中的 `MemFree` 值。 单位：字节  | 
| FreeableMemory |  随机存取内存的可用大小。 单位：字节  | 
| MemoryAllocated |  为任务分配的最大内存量（0 表示没有限制）。 AWS DMS 将此指标与 CloudWatch 控制台`ReplicationTaskIdentifier`中的`ReplicationInstanceIdentifer`和的组合维度相提并论。使用 `ReplicationInstanceIdentifier, ReplicationTaskIdentifier` 类别查看此指标。 单位：MiB  | 
| 写入 IOPS |  每秒磁盘写入 I/O 操作的平均次数。 单位：计数/秒  | 
| 读取 IOPS |  每秒磁盘读取 I/O 操作的平均次数。 单位：计数/秒  | 
| WriteThroughput |  每秒写入磁盘的平均字节数。 单位：字节/秒  | 
| ReadThroughput |  每秒从磁盘读取的平均字节数。 单位：字节/秒  | 
| WriteLatency |  每次磁盘 I/O （输出）操作所用的平均时间。 单位：毫秒  | 
| ReadLatency |  每次磁盘 I/O （输入）操作所花费的平均时间。 单位：毫秒  | 
| SwapUsage |  复制实例上使用的交换空间的大小。 单位：字节  | 
| NetworkTransmitThroughput | 复制实例的传出（传输）网络流量，包括客户数据库流量。单位：字节/秒 | 
| NetworkReceiveThroughput |  复制实例的传入（接收）网络流量，包括客户数据库流量。 单位：字节/秒  | 

### 复制任务指标
<a name="CHAP_Monitoring.Metrics.Task"></a>

复制任务监控包括针对以下统计数据的指标。


|  指标  |  说明  | 
| --- | --- | 
| FullLoadThroughputBandwidthTarget |  目标在满负载情况下的传出数据传输速率，以每秒 KB 数为单位。  | 
| FullLoadThroughputRowsTarget |  目标上的完全加载的传出更改，以行/秒为单位。  | 
| CDCIncoming变化 |  a 上等待应用于目标 point-in-time的更改事件总数。请注意，这与源终端节点的事务更改速率指标不同。对于该指标，较大的值通常表示 AWS DMS 无法及时应用捕获的更改，从而导致较高的目标延迟。  | 
| CDCChangesMemorySource |  内存中累积并等待从源提交的行数。您可以一起查看此指标 CDCChangesDiskSource。  | 
| CDCChangesMemoryTarget |  内存中累积并等待提交到目标的行数。您可以一起查看此指标 CDCChangesDiskTarget。  | 
| CDCChangesDiskSource |  磁盘上累积并等待从源提交的行数。您可以一起查看此指标 CDCChangesMemorySource。  | 
| CDCChangesDiskTarget |  磁盘上累积并等待提交到目标的行数。您可以一起查看此指标 CDCChangesMemoryTarget。  | 
| CDCThroughputBandwidthTarget |  目标的传出数据传输速率，以每秒 KB 数为单位。 CDCThroughput带宽记录采样点传输的传出数据。如果未找到任务网络流量，则该值为零。由于 CDC 不发布长时间运行的事务，可能不会记录网络流量。  | 
| CDCThroughputRowsSource |  源的传入任务更改，以行/秒为单位。  | 
| CDCThroughputRowsTarget |  目标的传出任务更改，以行/秒为单位。  | 
| CDCLatency来源 |  从源端点捕获的最后一个事件与 AWS DMS 实例的当前系统时间戳之间的间隔，以秒为单位。 CDCLatency来源表示源实例和复制实例之间的延迟。High S CDCLatency ource 表示从源捕获更改的过程被延迟。要确定正在进行的复制过程中的延迟，您可以将此指标与 Targe CDCLatency t 一起查看。如果 CDCLatency源和 CDCLatency目标均为高，请先调查 CDCLatency源。 CDCSource如果源实例和复制实例之间没有复制延迟，则延迟可以为 0。 CDCSource当复制任务尝试读取源事务日志中的下一个事件，并且与上次从源读取数据时相比没有新事件时，延迟也可能变为零。发生这种情况时，任务会将 CDCSource延迟时间重置为 0。  | 
| CDCLatency目标 |  在目标上等待提交的第一个事件时间戳与 AWS DMS 实例的当前系统时间戳之间的间隔（秒）。目标延迟是复制实例服务器时间，与转发到目标组件的最早未经确认的事件 ID 时间之间的差异。换句话说，目标延迟是复制实例的时间戳，与已应用但未经 TRG 端点确认的最早事件之间的时间戳之差（99%）。当 CDCLatency Target 为高时，表示将更改事件应用于目标的过程已延迟。要确定正在进行的复制过程中的延迟，您可以将此指标与 S CDCLatency ource 一起查看。如果 CDCLatency Target 为高但 CDCLatency源不高，请调查是否： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/CHAP_Monitoring.html)  | 
| CPUUtilization |  任务在多个内核上使用的 CPU 百分比。任务的语义与复制 CPUUtilizaiton略 CPUUtilization 有不同。如果 1 个 vCPU 已完全使用，则表示 100%；但如果使用多个 v，CPUs 则该值可能高于 100%。 单位：百分比  | 
| SwapUsage |  任务使用的交换区数量。 单位：字节  | 
| MemoryUsage |  任务使用的控制组（cgroup）**memory.usage\$1in\$1bytes**。DMS 使用 cgroup 来控制内存和 CPU 等系统资源的使用。该指标表示在为任务分配的 cgroup 中，该任务的内存使用量，以 MB 为单位。cgroup 限制基于可供您 DMS 复制实例类使用的资源。**memory.usage\$1in\$1bytes** 由驻留集大小（RSS）、缓存和内存的交换组件组成。如果需要，操作系统可以回收缓存。我们建议您同时监控复制实例指标**AvailableMemory**。 AWS DMS 将此指标与 CloudWatch 控制台`ReplicationTaskIdentifier`中的`ReplicationInstanceIdentifer`和的组合维度相提并论。使用 `ReplicationInstanceIdentifier, ReplicationTaskIdentifier` 类别查看此指标。  | 

## 查看和管理 AWS DMS 任务日志
<a name="CHAP_Monitoring.ManagingLogs"></a>

在 AWS DMS 迁移过程中 CloudWatch ，您可以使用 Amazon 记录任务信息。您可以在选择任务设置时启用日志记录。有关更多信息，请参阅 [日志记录任务设置](CHAP_Tasks.CustomizingTasks.TaskSettings.Logging.md)。

要查看运行的任务的日志，请按照下列步骤操作：

1. 打开 AWS DMS 控制台，然后从导航窗格中选择**数据库迁移任务**。此时将显示“数据库迁移任务”对话框。

1. 选择角色的名称。此时将显示“概述详细信息”对话框。

1. 找到 “**迁移任务日志**” 部分，然后选择 “**查看 CloudWatch 日志**”。

此外，您还可以使用 AWS CLI 或 AWS DMS API 来查看有关任务日志的信息。为此，请使用`describe-replication-instance-task-logs` AWS CLI 命令或 AWS DMS API 操作`DescribeReplicationInstanceTaskLogs`。

例如，以下 AWS CLI 命令以 JSON 格式显示任务日志元数据。

```
$ aws dms describe-replication-instance-task-logs \
   --replication-instance-arn arn:aws:dms:us-east-1:237565436:rep:CDSFSFSFFFSSUFCAY
```

命令中的示例响应如下所示。

```
{
    "ReplicationInstanceTaskLogs": [
        {
            "ReplicationTaskArn": "arn:aws:dms:us-east-1:237565436:task:MY34U6Z4MSY52GRTIX3O4AY",
            "ReplicationTaskName": "mysql-to-ddb",
            "ReplicationInstanceTaskLogSize": 3726134
        }
    ],
    "ReplicationInstanceArn": "arn:aws:dms:us-east-1:237565436:rep:CDSFSFSFFFSSUFCAY"
}
```

在此响应中，只有一个与复制实例关联的任务日志 (`mysql-to-ddb`)。此日志的大小为 3,726,124 字节。

您可以使用由 `describe-replication-instance-task-logs` 返回的信息来诊断和排查任务日志的问题。例如，如果您对任务启用详细的调试日志记录，则任务日志将快速增大，可能会消耗复制实例上的所有可用存储空间，并且导致实例状态更改为 `storage-full`。通过描述任务日志，您可以确定不再需要的日志；然后可以将其删除，从而释放存储空间。

要删除任务的任务日志，请将任务设置 `DeleteTaskLogs` 设置为 true。例如，使用 AWS CLI `modify-replication-task`命令或 AWS DMS API `ModifyReplicationTask` 操作修改任务时，以下 JSON 会删除任务日志。

```
{
   "Logging": {
       "DeleteTaskLogs":true
   }
}
```

**注意**  
对于每个复制实例， AWS DMS 删除超过 10 天的日志。

## 使用记录 AWS DMS API 调用 AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

AWS DMS 与 AWS CloudTrail一项服务集成，该服务提供用户、角色或 AWS 服务在中执行的操作的记录 AWS DMS。 CloudTrail 将所有 API 调用捕获 AWS DMS 为事件，包括来自 AWS DMS 控制台的调用和对 AWS DMS API 操作的代码调用。如果您创建了跟踪，则可以允许将 CloudTrail 事件持续传输到 Amazon S3 存储桶，包括的事件 AWS DMS。如果您未配置跟踪，您仍然可以在 CloudTrail 控制台的 “事件**历史记录” 中查看最新的事件**。使用收集的信息 CloudTrail，您可以确定向哪个请求发出 AWS DMS、发出请求的 IP 地址、谁发出了请求、何时发出请求以及其他详细信息。

要了解更多信息 CloudTrail，请参阅[AWS CloudTrail 用户指南](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。

### AWS DMS 信息在 CloudTrail
<a name="service-name-info-in-cloudtrail"></a>

CloudTrail 在您创建 AWS 账户时已在您的账户上启用。当活动发生在中时 AWS DMS，该活动会与其他 AWS 服务 CloudTrail 事件一起记录在**事件历史**记录中。您可以在自己的 AWS 账户中查看、搜索和下载最近发生的事件。有关更多信息，请参阅[使用事件历史查看 CloudTrail 事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)。

要持续记录您 AWS 账户中的事件，包括的事件 AWS DMS，请创建跟踪。跟踪允许 CloudTrail 将日志文件传输到 Amazon S3 存储桶。默认情况下，当您在控制台中创建跟踪时，该跟踪将应用于所有 AWS 区域。跟踪记录 AWS 分区中所有 AWS 区域的事件，并将日志文件传送到您指定的 Amazon S3 存储桶。此外，您可以配置其他 AWS 服务，以进一步分析和处理 CloudTrail 日志中收集的事件数据。有关更多信息，请参阅: 
+ [创建跟踪概览](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail 支持的服务和集成](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [配置 Amazon SNS 通知 CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [接收来自多个 AWS 区域的 CloudTrail 日志文件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html)和[接收来自多个账户的 CloudTrail 日志文件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

所有 AWS DMS 操作均由《API 参考》记录 CloudTrail 并记录在《[AWS Database Migration Service API 参考](https://docs.aws.amazon.com/dms/latest/APIReference/)》中。例如，调用`TestConnection`和`StartReplicationTask`操作会在 CloudTrail 日志文件中生成条目。`CreateReplicationInstance`

每个事件或日志条目都包含有关生成请求的人员信息。身份信息可帮助您确定以下内容：
+ 请求是使用根用户凭证还是 IAM 用户凭证发出的。
+ 请求是使用角色还是联合用户的临时安全凭证发出的。
+ 请求是否由其他 AWS 服务发出。

有关更多信息，请参阅 [CloudTrail userIdentity 元素](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)。

### 了解 AWS DMS 日志文件条目
<a name="understanding-service-name-entries"></a>

跟踪是一种配置，允许将事件作为日志文件传输到您指定的 Amazon S3 存储桶。 CloudTrail 日志文件包含一个或多个日志条目。事件代表来自任何来源的单个请求，包括有关请求的操作、操作的日期和时间、请求参数等的信息。 CloudTrail 日志文件不是公共 API 调用的有序堆栈跟踪，因此它们不会按任何特定顺序出现。

以下示例显示了演示该`RebootReplicationInstance`操作的 CloudTrail 日志条目。

```
    {
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AKIAIOSFODNN7EXAMPLE:johndoe",
        "arn": "arn:aws:sts::123456789012:assumed-role/admin/johndoe",
        "accountId": "123456789012",
        "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "2018-08-01T16:42:09Z"
            },
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AKIAIOSFODNN7EXAMPLE",
                "arn": "arn:aws:iam::123456789012:role/admin",
                "accountId": "123456789012",
                "userName": "admin"
            }
        }
    },
    "eventTime": "2018-08-02T00:11:44Z",
    "eventSource": "dms.amazonaws.com",
    "eventName": "RebootReplicationInstance",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "72.21.198.64",
    "userAgent": "console.amazonaws.com",
    "requestParameters": {
        "forceFailover": false,
        "replicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:EX4MBJ2NMRDL3BMAYJOXUGYPUE"
    },
    "responseElements": {
        "replicationInstance": {
            "replicationInstanceIdentifier": "replication-instance-1",
            "replicationInstanceStatus": "rebooting",
            "allocatedStorage": 50,
            "replicationInstancePrivateIpAddresses": [
                "172.31.20.204"
            ],
            "instanceCreateTime": "Aug 1, 2018 11:56:21 PM",
            "autoMinorVersionUpgrade": true,
            "engineVersion": "2.4.3",
            "publiclyAccessible": true,
            "replicationInstanceClass": "dms.t2.medium",
            "availabilityZone": "us-east-1b",
            "kmsKeyId": "arn:aws:kms:us-east-1:123456789012:key/f7bc0f8e-1a3a-4ace-9faa-e8494fa3921a",
            "replicationSubnetGroup": {
                "vpcId": "vpc-1f6a9c6a",
                "subnetGroupStatus": "Complete",
                "replicationSubnetGroupArn": "arn:aws:dms:us-east-1:123456789012:subgrp:EDHRVRBAAAPONQAIYWP4NUW22M",
                "subnets": [
                    {
                        "subnetIdentifier": "subnet-cbfff283",
                        "subnetAvailabilityZone": {
                            "name": "us-east-1b"
                        },
                        "subnetStatus": "Active"
                    },
                    {
                        "subnetIdentifier": "subnet-d7c825e8",
                        "subnetAvailabilityZone": {
                            "name": "us-east-1e"
                        },
                        "subnetStatus": "Active"
                    },
                    {
                        "subnetIdentifier": "subnet-6746046b",
                        "subnetAvailabilityZone": {
                            "name": "us-east-1f"
                        },
                        "subnetStatus": "Active"
                    },
                    {
                        "subnetIdentifier": "subnet-bac383e0",
                        "subnetAvailabilityZone": {
                            "name": "us-east-1c"
                        },
                        "subnetStatus": "Active"
                    },
                    {
                        "subnetIdentifier": "subnet-42599426",
                        "subnetAvailabilityZone": {
                            "name": "us-east-1d"
                        },
                        "subnetStatus": "Active"
                    },
                    {
                        "subnetIdentifier": "subnet-da327bf6",
                        "subnetAvailabilityZone": {
                            "name": "us-east-1a"
                        },
                        "subnetStatus": "Active"
                    }
                ],
                "replicationSubnetGroupIdentifier": "default-vpc-1f6a9c6a",
                "replicationSubnetGroupDescription": "default group created by console for vpc id vpc-1f6a9c6a"
            },
            "replicationInstanceEniId": "eni-0d6db8c7137cb9844",
            "vpcSecurityGroups": [
                {
                    "vpcSecurityGroupId": "sg-f839b688",
                    "status": "active"
                }
            ],
            "pendingModifiedValues": {},
            "replicationInstancePublicIpAddresses": [
                "18.211.48.119"
            ],
            "replicationInstancePublicIpAddress": "18.211.48.119",
            "preferredMaintenanceWindow": "fri:22:44-fri:23:14",
            "replicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:EX4MBJ2NMRDL3BMAYJOXUGYPUE",
            "replicationInstanceEniIds": [
                "eni-0d6db8c7137cb9844"
            ],
            "multiAZ": false,
            "replicationInstancePrivateIpAddress": "172.31.20.204",
            "patchingPrecedence": 0
        }
    },
    "requestID": "a3c83c11-95e8-11e8-9d08-4b8f2b45bfd5",
    "eventID": "b3c4adb1-e34b-4744-bdeb-35528062a541",
    "eventType": "AwsApiCall",
    "recipientAccountId": "123456789012"
}
```

## AWS DMS 上下文记录
<a name="datarep_Monitoring_ContextLogging"></a>

AWS DMS 使用上下文记录为您提供有关正在进行的迁移的信息。上下文日志记录将诸如以下内容之类的信息写入任务 CloudWatch 日志：
+ 有关任务与源数据库和目标数据库连接的信息。
+ 复制任务行为。您可以使用任务日志来诊断复制问题。
+ 在源数据库和目标数据库上 AWS DMS 执行的不带数据的 SQL 语句。您可以使用 SQL 日志来诊断意外的迁移行为。
+ 流式传输每个 CDC 事件的位置详细信息。

上下文日志仅在 3.5.0 或更高 AWS DMS 版本中可用。

AWS DMS 默认情况下开启上下文记录。要控制上下文日志记录，请将 `EnableLogContext` 任务设置设为 `true` 或 `false`，或者在控制台中修改任务。

AWS DMS 每三分钟将上下文 CloudWatch 日志信息写入日志的复制任务。请确保您的复制实例有足够的空间来存储其应用程序日志。有关使用管理任务日志的更多信息，请参阅[查看和管理 AWS DMS 任务日志](#CHAP_Monitoring.ManagingLogs)。

**Topics**
+ [对象类型](#datarep_Monitoring_ContextLogging_objects)
+ [日志记录示例](#datarep_Monitoring_ContextLogging_examples)
+ [限制](#datarep_Monitoring_ContextLogging_limitations)

### 对象类型
<a name="datarep_Monitoring_ContextLogging_objects"></a>

AWS DMS CloudWatch 为以下对象类型生成上下文登录。


| 对象类型 | 说明 | 
| --- | --- | 
| TABLE\$1NAME | 这些日志条目包含当前任务映射规则范围内表的相关信息。您可以使用这些条目来检查迁移期间特定时间段内的表事件。 | 
| SCHEMA\$1NAME | 这些日志条目包含当前任务映射规则所使用的架构的相关信息。您可以使用这些条目来确定在迁移期间的特定时间段内使用 AWS DMS 哪个架构。 | 
| TRANSACTION\$1ID | 这些条目包含从源数据库捕获的每个 DML/DDL 更改的事务 ID。您可以使用这些日志条目来确定在给定事务期间发生了哪些更改。 | 
| CONNECTION\$1ID | 这些条目包含连接 ID。您可以使用这些日志条目来确定每个迁移步骤 AWS DMS 使用哪个连接。 | 
| STATEMENT | 这些条目包含用于获取、处理和应用每项迁移更改的 SQL 代码。 | 
| STREAM\$1POSITION | 这些条目包含源数据库上的每个迁移操作在事务日志文件中的位置。这些条目的格式因源数据库引擎类型而异。在配置仅 CDC 的复制时，您还可以使用此信息来确定恢复检查点的起始位置。 | 

### 日志记录示例
<a name="datarep_Monitoring_ContextLogging_examples"></a>

本节提供了可用于监控复制和诊断复制问题的日志记录示例。

#### 连接日志示例
<a name="datarep_Monitoring_ContextLogging_examples_connection"></a>

本节包含包含连接的日志示例 IDs。

```
2023-02-22T10:09:29 [SOURCE_CAPTURE  ]I:  Capture record 1 to internal queue from Source  {operation:START_REGULAR (43), connectionId:27598, streamPosition:0000124A/6800A778.NOW}  (streamcomponent.c:2920)
            
2023-02-22T10:12:30 [SOURCE_CAPTURE  ]I:  Capture record 0 to internal queue from Source  {operation:IDLE (51), connectionId:27598}  (streamcomponent.c:2920)

2023-02-22T11:25:27 [SOURCE_CAPTURE  ]I:  Capture record 0 to internal queue from Source  {operation:IDLE (51), columnName:region, connectionId:27598}  (streamcomponent.c:2920)
```

#### 任务行为日志示例
<a name="datarep_Monitoring_ContextLogging_examples_behavior"></a>

本节提供了有关复制任务日志行为的日志示例。您可以使用此信息来诊断复制问题，例如状态为 `IDLE` 的任务。

以下 `SOURCE_CAPTURE` 日志表明没有可从源数据库日志文件中读取的事件，并且包含的 `TARGET_APPLY` 记录表明，没有从 AWS DMS CDC 组件收到任何可应用到目标数据库的事件。这些事件还包含先前应用的与事件相关的上下文详细信息。

```
2023-02-22T11:23:24 [SOURCE_CAPTURE  ]I:  No Event fetched from wal log  (postgres_endpoint_wal_engine.c:1369)
2023-02-22T11:24:29 [TARGET_APPLY    ]I:  No records received to load or apply on target , waiting for data from upstream. The last context is  {operation:INSERT (1), tableName:sales_11, schemaName:public, txnId:18662441, connectionId:17855, statement:INSERT INTO "public"."sales_11"("sales_no","dept_name","sale_amount","sale_date","region") values (?,?,?,?,?),
```

#### SQL 语句日志示例
<a name="datarep_Monitoring_ContextLogging_examples_sql"></a>

本节提供了在源数据库和目标数据库上运行 SQL 语句的日志示例。您在日志中看到的 SQL 语句仅显示 SQL 语句，不显示数据。以下 `TARGET_APPLY` 日志显示了在目标上运行的 `INSERT` 语句。

```
2023-02-22T11:26:07 [TARGET_APPLY    ]I:  Applied record 2193305 to target  {operation:INSERT (1), tableName:sales_111, schemaName:public, txnId:18761543, connectionId:17855, statement:INSERT INTO "public"."sales_111"("sales_no","dept_name","sale_amount","sale_date","region") values (?,?,?,?,?), 
```

### 限制
<a name="datarep_Monitoring_ContextLogging_limitations"></a>

以下限制适用于 AWS DMS 上下文记录：
+ 虽然为所有端点类型 AWS DMS 创建的日志记录最少，但大量的特定于引擎的上下文日志记录仅适用于以下端点类型。我们建议在使用这些端点类型时开启上下文日志记录。
  + MySQL
  + PostgreSQL
  + Oracle
  + Microsoft SQL Server
  + MongoDB/Amazon DocumentDB
  + Amazon S3