

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

# 监控 MemoryDB 事件
<a name="monitoring-events"></a>

当集群上发生重大事件时，MemoryDB 会将通知发送到特定 Amazon SNS 主题。示例可以包括添加节点失败、添加节点成功、修改安全组等内容。通过监控关键事件，您可以了解集群的当前状态，并且能够根据事件采取相应的纠正措施。

**Topics**
+ [管理 MemoryDB Amazon SNS 通知](mdbevents.sns.md)
+ [查看 MemoryDB 事件](mdbevents.viewing.md)
+ [事件通知和 Amazon SNS](memorydbsns.md)

# 管理 MemoryDB Amazon SNS 通知
<a name="mdbevents.sns"></a>

您可以配置 MemoryDB 以使用 Amazon Simple Notification Service（Amazon SNS）发送重要集群事件的通知。在这些示例中，您将使用 Amazon SNS 主题的 Amazon 资源名称（ARN）配置集群，以便接收通知。

**注意**  
此主题假设您已经注册 Amazon SNS，同时已设置并订阅 Amazon SNS 主题。有关如何执行此操作的信息，请参阅 [Amazon Simple Notification Service 开发人员指南](https://docs.aws.amazon.com/sns/latest/dg/)。

## 添加 Amazon SNS 主题
<a name="mdbevents.sns.adding"></a>

以下部分说明了如何使用 AWS 控制台、AWS CLI 或 MemoryDB API 添加 Amazon SNS 主题。

### 添加 Amazon SNS 主题（控制台）
<a name="mdbevents.sns.addingclusters.viewdetails.console"></a>

 以下过程说明了如何为集群添加 Amazon SNS 主题。

**注意**  
 此过程还可用于修改 Amazon SNS 主题。

**为集群添加或修改 Amazon SNS 主题（控制台）**

1. 登录到 AWS 管理控制台 并打开 MemoryDB 控制台，网址：[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/)。

1. 在 **Clusters（集群）**中，选择要为其添加或修改 Amazon SNS 主题 ARN 的集群。

1. 选择 **Modify**(修改)。

1. 在 **Topic for SNS Notification（SNS 通知的主题）**下的 **Modify Cluster（修改集群）**中，选择要添加的 SNS 主题，或选择 **Manual ARN input（手动 ARN 输入）**并键入 Amazon SNS 主题的 ARN。

1. 选择 **Modify**(修改)。

### 添加 Amazon SNS 主题（AWS CLI）
<a name="mdbevents.sns.adding.cli"></a>

要为集群添加或修改 Amazon SNS 主题，请使用 AWS CLI 命令 `update-cluster`。

以下代码示例会将 Amazon SNS 主题 ARN 添加到 *my-cluster*。

对于 Linux、macOS 或 Unix：

```
aws memorydb update-cluster \
    --cluster-name my-cluster \
    --sns-topic-arn arn:aws:sns:us-east-1:565419523791:memorydbNotifications
```

对于 Windows：

```
aws memorydb update-cluster ^
    --cluster-name my-cluster ^
    --sns-topic-arn arn:aws:sns:us-east-1:565419523791:memorydbNotifications
```

有关更多信息，请参阅 [UpdateCluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html)。

### 添加 Amazon SNS 主题（MemoryDB API）
<a name="mdbevents.sns.adding.api"></a>

若要为集群添加或更新 Amazon SNS 主题，请使用下列参数调用 `UpdateCluster` 操作：
+ `ClusterName``=my-cluster`
+ `SnsTopicArn``=arn%3Aaws%3Asns%3Aus-east-1%3A565419523791%3AmemorydbNotifications`

若要为集群添加或更新 Amazon SNS 主题，请调用 `UpdateCluster` 操作。

有关更多信息，请参阅 [UpdateCluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html)。

## 启用和禁用 Amazon SNS 通知
<a name="mdbevents.sns.disabling"></a>

 您可以打开或关闭针对集群的通知。下面将介绍如何禁用 Amazon SNS 通知。

### 启用和禁用 Amazon SNS 通知（控制台）
<a name="mdbevents.sns.disablingclusters.viewdetails.console"></a>

**使用 AWS 管理控制台 禁用 Amazon SNS 通知**

1. 登录到 AWS 管理控制台 并打开 MemoryDB 控制台，网址：[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/)。

1. 选择要修改其通知的集群左侧的单选按钮。

1. 选择 **Modify**(修改)。

1. 在 **Topic for SNS Notification** 下的 **Modify Cluster** 中，选择 *Disable Notifications*。

1. 选择 **Modify**(修改)。

### 启用和禁用 Amazon SNS 通知（AWS CLI）
<a name="mdbevents.sns.disabling.cli"></a>

若要禁用 Amazon SNS 通知，请使用包含以下参数的命令 `update-cluster`：

对于 Linux、macOS 或 Unix：

```
aws memorydb update-cluster \
    --cluster-name my-cluster \
    --sns-topic-status inactive
```

对于 Windows：

```
aws memorydb update-cluster ^
    --cluster-name my-cluster ^
    --sns-topic-status inactive
```

### 启用和禁用 Amazon SNS 通知（MemoryDB API）
<a name="mdbevents.sns.disabling.api"></a>

若要禁用 Amazon SNS 通知，请使用下列参数调用 `UpdateCluster` 操作：
+ `ClusterName``=my-cluster`
+ `SnsTopicStatus``=inactive`

此调用返回类似于下述信息的输出：

**Example**  

```
 1. https://memory-db.us-east-1.amazonaws.com/
 2.     ?Action=UpdateCluster    
 3.     &ClusterName=my-cluster
 4.     &SnsTopicStatus=inactive
 5.     &Version=2021-01-01
 6.     &SignatureVersion=4
 7.     &SignatureMethod=HmacSHA256
 8.     &Timestamp=20210801T220302Z
 9.     &X-Amz-Algorithm=Amazon4-HMAC-SHA256
10.     &X-Amz-Date=20210801T220302Z
11.     &X-Amz-SignedHeaders=Host
12.     &X-Amz-Expires=20210801T220302Z
13.     &X-Amz-Credential=<credential>
14.     &X-Amz-Signature=<signature>
```

# 查看 MemoryDB 事件
<a name="mdbevents.viewing"></a>

MemoryDB 记录与您的集群、安全组和参数组有关的事件。此信息包括事件的日期和时间、事件的源名称和源类型以及事件描述。通过使用 MemoryDB 控制台、AWS CLI `describe-events` 命令或 MemoryDB API 操作 `DescribeEvents`，您可以轻松从日志中检索事件。

以下过程说明了如何查看过去 24 小时（1440 分钟）内的所有 MemoryDB 事件。

## 查看 MemoryDB 事件（控制台）
<a name="mdbevents.viewingclusters.viewdetails"></a>

以下过程显示了使用 MemoryDB 控制台的事件。

**使用 MemoryDB 控制台查看事件**

1. 登录到 AWS 管理控制台 并打开 MemoryDB 控制台，网址：[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/)。

1. 在左侧导航窗格中，选择**事件**。

   *事件*屏幕显示了所有可用事件列表。列表的每一行表示一个事件，并显示事件源、事件类型（例如 cluster、parameter-group、acl、security-group 或 subnet group）、事件的 GMT 时间及事件的描述。

   通过使用 **Filter**，您可以指定是要查看事件列表中的所有事件，还是仅查看特定类型的事件。

## 查看 MemoryDB 事件（AWS CLI）
<a name="mdbevents.viewing.cli"></a>

要使用 AWS CLI 生成 MemoryDB 事件的列表，请使用命令 `describe-events`。您可以使用可选参数来控制所列事件的类型、所列事件的时间范围、要列出的事件的最大数目等。

以下代码列出最多 40 个集群事件。

```
aws memorydb describe-events --source-type cluster --max-results 40  
```

以下代码列出了过去 24 小时（1440 分钟）内的所有事件。

```
aws memorydb describe-events --duration 1440  
```

`describe-events` 命令的输出类似于此处所示。

```
{
    "Events": [        
        {
            "Date": "2021-03-29T22:17:37.781Z", 
            "Message": "Added node 0001 in Availability Zone us-east-1a", 
            "SourceName": "memorydb01", 
            "SourceType": "cluster"
        }, 
        {
            "Date": "2021-03-29T22:17:37.769Z", 
            "Message": "cluster created", 
            "SourceName": "memorydb01", 
            "SourceType": "cluster"
        }
    ]
}
```

有关更多信息（如可用参数和允许的参数值），请参阅 [https://docs.aws.amazon.com/cli/latest/reference/memorydb/describe-events.html](https://docs.aws.amazon.com/cli/latest/reference/memorydb/describe-events.html)。

## 查看 MemoryDB 事件（MemoryDB API）
<a name="mdbevents.viewing.api"></a>

要使用 MemoryDB API 生成 MemoryDB 事件的列表，请使用 `DescribeEvents` 操作。您可以使用可选参数来控制所列事件的类型、所列事件的时间范围、要列出的事件的最大数目等。

以下代码列出了 40 个最新的集群事件。

```
https://memory-db.us-east-1.amazonaws.com/
   ?Action=DescribeEvents
   &MaxResults=40
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &SourceType=cluster
   &Timestamp=20210802T192317Z
   &Version=2021-01-01
   &X-Amz-Credential=<credential>
```

以下代码列出了过去 24 小时（1440 分钟）内的集群事件。

```
https://memory-db.us-east-1.amazonaws.com/
   ?Action=DescribeEvents
   &Duration=1440
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &SourceType=cluster
   &Timestamp=20210802T192317Z
   &Version=2021-01-01
   &X-Amz-Credential=<credential>
```

以上操作应生成类似于以下内容的输出。

```
<DescribeEventsResponse xmlns="http://memory-db.us-east-1.amazonaws.com/doc/2021-01-01/"> 
    <DescribeEventsResult> 
        <Events> 
            <Event> 
                <Message>cluster created</Message> 
                <SourceType>cluster</SourceType> 
                <Date>2021-08-02T18:22:18.202Z</Date> 
                <SourceName>my-memorydb-primary</SourceName> 
            </Event> 
               
 (...output omitted...)
          
        </Events> 
    </DescribeEventsResult> 
    <ResponseMetadata> 
        <RequestId>e21c81b4-b9cd-11e3-8a16-7978bb24ffdf</RequestId> 
    </ResponseMetadata> 
</DescribeEventsResponse>
```

有关更多信息（如可用参数和允许的参数值），请参阅 [https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeEvents.html](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeEvents.html)。

# 事件通知和 Amazon SNS
<a name="memorydbsns"></a>

当集群上发生重要事件时，MemoryDB 可以使用 Amazon Simple Notification Service（SNS）发布消息。此功能可用于在连接到集群的各个节点端点的客户端计算机上刷新服务器列表。

**注意**  
有关 Amazon Simple Notification Service（SNS）的更多信息（包括定价信息和 Amazon SNS 文档链接），请参阅 [Amazon SNS 产品页面](https://aws.amazon.com/sns)。

通知会发布到指定 Amazon SNS *主题*。下面是通知的要求：
+ 只能为 MemoryDB 通知配置一个主题。
+ 拥有 Amazon SNS 主题的 AWS 账户必须是拥有已启用通知的集群的同一账户。

## MemoryDB 事件
<a name="memorydbSNS.Events"></a>

以下 MemoryDB 事件会触发 Amazon SNS 通知：


| 事件名称 | 消息 | 描述 | 
| --- | --- | --- | 
|  MemoryDB:AddNodeComplete  |  "Modified number of nodes from %d to %d"  |  节点已添加到集群，并准备就绪，可供可用。  | 
|  由于空闲 IP 地址不足导致的 MemoryDB:AddNodeFailed  |  "Failed to modify number of nodes from %d to %d due to insufficient free IP addresses"  |  因为没有足够的可用 IP 地址，所以无法添加节点。  | 
|  MemoryDB:ClusterParametersChanged  |  "Updated parameter group for the cluster" 在执行创建操作的情况下，还发送 `"Updated to use a ParameterGroup %s"`  |  一个或多个集群参数已更改。  | 
|  MemoryDB:ClusterProvisioningComplete  |  "Cluster created."  |  集群预配置已完成，并且集群中的节点准备就绪，可供使用。  | 
|  由于不兼容网络状态导致的 MemoryDB:ClusterProvisioningFailed  |  "Failed to create cluster due to incompatible network state. %s"  |  尝试将新集群启动到不存在的虚拟私有云（VPC）中。  | 
|  MemoryDB:ClusterRestoreFailed  |  "Restore from %s failed for node %s. %s"  |  MemoryDB 无法使用快照数据填充集群。这可能是由于 Amazon S3 中不存在快照文件，或者该文件的权限不正确。要对集群加以说明，状态将是 `restore-failed`。您需要删除集群，重新开始。 有关更多信息，请参阅 [使用外部创建的快照为新集群做种](snapshots-seeding-redis.md)。  | 
| MemoryDB:ClusterScalingComplete  | `"Succeeded applying modification to node type to %s."` | 已成功纵向扩展集群。 | 
| MemoryDB:ClusterScalingFailed | `"Failed applying modification to node type to %s."` | 对集群的纵向扩展操作已失败。 | 
|  MemoryDB:NodeReplaceStarted  |  "Recovering node %s"  |  MemoryDB 已检测到运行节点的主机性能下降或无法访问，并已开始节点的替换工作。  针对替换之节点的 DNS 分录未发生变化。  在大多数情况下，您无需在此事件发生时刷新适用于您的客户端的服务器列表。然而，某些客户端库可能停止使用节点，即使在 MemoryDB 已替换节点之后，亦是如此；在这种情况下，应用程序应该在此事件发生时刷新服务器列表。  | 
|  MemoryDB:NodeReplaceComplete  |  "Finished recovery for node %s"  |  MemoryDB 已检测到运行节点的主机性能下降或无法访问，并已完成节点的替换工作。  针对替换之节点的 DNS 分录未发生变化。  在大多数情况下，您无需在此事件发生时刷新适用于您的客户端的服务器列表。然而，某些客户端库可能停止使用节点，即使在 MemoryDB 已替换节点之后，亦是如此；在这种情况下，应用程序应该在此事件发生时刷新服务器列表。  | 
|  MemoryDB:CreateClusterComplete  |  "Cluster created"  |  成功创建集群。  | 
|  MemoryDB:CreateClusterFailed  |  "Failed to create cluster due to unsuccessful creation of its node(s).""and""Deleting all nodes belonging to this cluster." |  未创建集群。  | 
|  MemoryDB:DeleteClusterComplete  |  "Cluster deleted."  |  已完成集群和所有关联节点的删除工作。  | 
| MemoryDB:FailoverComplete | `"Failover to replica node %s completed"` | 已成功故障转移至副本节点。 | 
|  MemoryDB:NodeReplacementCanceled  |  "The replacement of node %s which was scheduled during the maintenance window from start time: %s, end time: %s has been canceled"  |  计划替换的集群中的节点不再计划替换。  | 
|  MemoryDB:NodeReplacementRescheduled  |  "The replacement in maintenance window for node %s has been re-scheduled from previous start time: %s, previous end time: %s to new start time: %s, new end time: %s"  |  之前计划替换的集群中的节点已计划在通知中所述的新时段内替换。 有关您可以执行的操作的信息，请参阅 [替换节点](nodes.nodereplacement.md)。  | 
|  MemoryDB:NodeReplacementScheduled  |  "The node %s is scheduled for replacement during the maintenance window from start time: %s to end time: %s"  |  您集群中的节点计划在通知所述的时段内替换。 有关您可以执行的操作的信息，请参阅 [替换节点](nodes.nodereplacement.md)。  | 
|  MemoryDB:RemoveNodeComplete  |  "Removed node %s"  |  节点已从集群中移除。  | 
|  MemoryDB:SnapshotComplete  |  "Snapshot %s succeeded for node %s"  |  快照已成功完成。  | 
|  MemoryDB:SnapshotFailed  |  "Snapshot %s failed for node %s"  |  快照失败。有关失败原因的详细信息，请参阅该集群的事件。 要对快照加以说明，请参阅 [DescribeSnapshots](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeSnapshots.html)，状态将是 `failed`。  | 