

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

# 使用 Amazon CloudWatch 工具监控部署
<a name="monitoring-cloudwatch"></a>

您可以使用以下 CloudWatch 工具监控 CodeDeploy 部署：Amazon CloudWatch 事件、 CloudWatch 警报和亚马逊 CloudWatch 日志。

查看 CodeDeploy 代理和部署创建的日志可以帮助您排除部署失败的原因。除了一次查看一个实例上的 CodeDeploy 日志之外，您还可以使用 CloudWatch 日志在一个中心位置监控所有日志。

有关使用 CloudWatch 警报和 CloudWatch 事件监控 CodeDeploy 部署的信息，请参阅以下主题。

**Topics**
+ [使用 CloudWatch 警报监控部署 CodeDeploy](monitoring-create-alarms.md)
+ [使用 Amazon CloudWatch 事件监控部署](monitoring-cloudwatch-events.md)

# 使用 CloudWatch 警报监控部署 CodeDeploy
<a name="monitoring-create-alarms"></a>

您可以为 CodeDeploy操作中使用的实例或 Amazon EC2 Auto Scaling 组创建 CloudWatch 警报。警报在您指定的时间段内监视单个指标，并根据该指标在多个时间段内相对于给定阈值的值执行一项或多项操作。 CloudWatch 警报的状态发生变化时会调用操作（例如，从变`OK`为`ALARM`）。

使用原生 CloudWatch 警报功能，您可以指定部署中使用的实例失败 CloudWatch 时支持的任何操作，例如发送 Amazon SNS 通知或停止、终止、重启或恢复实例。对于您的 CodeDeploy操作，您可以将部署组配置为在激活与部署组关联的任何 CloudWatch 警报时停止部署。

您最多可以将十个 CloudWatch 警报与一个 CodeDeploy 部署组相关联。如果任何指定警报激活，则部署将停止，状态将更新为 Stopped。要使用此选项，必须向您的 CodeDeploy 服务角色授予 CloudWatch 权限。

有关在 CloudWatch 控制台中设置 CloudWatch 警报的信息，请参阅[亚马逊* CloudWatch 用户指南中的创建亚马逊 CloudWatch *警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/AlarmThatSendsEmail.html)。

有关在中将 CloudWatch 警报与部署组关联的信息 CodeDeploy，请参阅[使用创建部署组 CodeDeploy](deployment-groups-create.md)和。[使用更改部署组设置 CodeDeploy](deployment-groups-edit.md)

**Topics**
+ [向 CodeDeploy 服务角色授予 CloudWatch 权限](monitoring-create-alarms-grant-permissions.md)

# 向 CodeDeploy 服务角色授予 CloudWatch 权限
<a name="monitoring-create-alarms-grant-permissions"></a>

在部署中使用 CloudWatch 警报监控之前，必须向您在 CodeDeploy 操作中使用的服务角色授予访问 CloudWatch 资源的权限。

**向服务角色授予 CloudWatch 权限**

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

1. 在 IAM 控制台的导航窗格中，选择**角色**。

1. 选择您在 AWS CodeDeploy 操作中使用的服务角色的名称。

1. 在 **Permissions** 选项卡上的 **Inline Policies** 区域中，选择 **Create Role Policy**。

   –或者–

   如果 **Create Role Policy** 按钮不可用，展开 **Inline Policies** 区域，然后选择 **click here**。

1. 在 **Set Permissions** 页面上，选择 **Custom Policy**，然后选择 **Select**。

1. 在 **Review Policy** 页面上的 **Policy Name** 字段中，键入一个名称以标识此策略，例如 `CWAlarms`。

1. 将以下内容粘贴到 **Policy Document** 字段中：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "cloudwatch:DescribeAlarms",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. 选择**应用策略**。

# 使用 Amazon CloudWatch 事件监控部署
<a name="monitoring-cloudwatch-events"></a>

您可以使用 Amazon CloudWatch Events 来检测 CodeDeploy 操作中实例或部署（“事件”）状态的变化并做出反应。然后，根据您创建的规则，当部署或实例进入您在规则中指定的状态时， CloudWatch 事件将调用一个或多个目标操作。根据状态更改的类型，您可能想发送通知，捕获状态信息，采取纠正措施，启动事件或采取其他操作。在 CodeDeploy 操作中使用 CloudWatch 事件时，您可以选择以下类型的目标：
+ AWS Lambda 函数
+  Kinesis Streams
+ Amazon SQS 队列
+ 内置目标（`EC2 CreateSnapshot API call`、`EC2 RebootInstances API call`、`EC2 StopInstances API call` 和 `EC2 TerminateInstances API call`）
+ Amazon SNS 主题

下面是一些用例：
+ 每当部署失败时使用 Lambda 函数向 Slack 通道传送通知。
+ 将有关部署或实例的数据推送到 Kinesis 流，以支持全面、实时的状态监控。
+ 当您指定的部署或 EC2实例事件发生时，使用 CloudWatch 警报操作自动停止、终止、重启或恢复 Amazon 实例。

本主题的其余部分描述了为创建 CloudWatch 事件规则的基本过程 CodeDeploy。但是，在创建用于 CodeDeploy 操作的事件规则之前，应执行以下操作：
+ 完成 CloudWatch 活动先决条件。有关信息，请参阅 [Amazon CloudWatch 活动先决条件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CWE_Prerequisites.html)。
+ 熟悉事件中的事件、规则和目标。 CloudWatch 有关更多信息，请参阅[什么是 Amazon CloudWatch 活动？](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) 和[新 CloudWatch 事件 — 跟踪和响应 AWS 资源的变化](https://aws.amazon.com/blogs/aws/new-cloudwatch-events-track-and-respond-to-changes-to-your-aws-resources/)。
+ 创建将在您的事件规则中使用的目标。

**要为以下 CloudWatch 各项创建事件规则 CodeDeploy：**

1. 打开 CloudWatch 控制台，网址为[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)。

1. 在导航窗格中，选择 **Events（事件）**。

1. 选择**创建规则**，然后在**事件选择器**下选择 **AWS CodeDeploy**。

1. 指定详细信息类型：
   + 要设置适用于所有实例和部署状态更改的规则，请选择 **Any detail type**，然后跳到步骤 6。
   + 要制定仅适用于实例的规则，请选择**特定详细信息类型**，然后选择**CodeDeploy 实例状态更改通知**。
   + 要制定仅适用于部署的规则，请选择**特定详细信息类型**，然后选择**CodeDeploy 部署状态更改通知**。

1. 指定规则适用的状态更改：
   + 要设置适用于所有状态更改的规则，请选择 **Any state**。
   + 要设置仅适用于部分状态更改的规则，请选择 **Specific state（s）**，然后从列表中选择一个或多个状态值。下表列出了您可以选择的状态值：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/monitoring-cloudwatch-events.html)

1. 指定规则适用于哪些 CodeDeploy 应用程序：
   + 要设置适用于所有应用程序的规则，请选择 **Any application**，然后跳到步骤 8。
   + 要设置仅适用于一个应用程序的规则，请选择 **Specific application**，然后从列表中选择该应用程序的名称。

1. 指定规则适用的部署组：
   + 要设置适用于与所选应用程序关联的所有部署组的规则，请选择 **Any deployment group**。
   + 要设置仅适用于与所选应用程序关联的一个部署组的规则，请选择 **Specific deployment group（s）**，然后从列表中选择该部署组的名称。

1. 审查您的规则设置以确保其符合事件监控要求。

1. 在 **Targets** 区域，选择 **Add target\$1**。

1. 在 **Select target type** 列表中，选择您准备为此规则使用的目标类型，然后配置该类型所需的任何其他选项。

1. 选择 **Configure details（配置详细信息）**。

1. 在 **Configure rule details** 页面上，为规则键入名称和说明，然后选择 **State** 框以立即启用该规则。

1. 如果您对规则满意，请选择 **Create rule**。