

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

# 使用带 OpsWorks 堆栈的 Amazon CloudWatch 日志
<a name="monitoring-cloudwatch-logs"></a>

**重要**  
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止，新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问，请通过 re [AWS : Post 或通过 Pre](https://repost.aws/) mium Su [AWS pp](https://aws.amazon.com/support) ort 与 AWS 支持 团队联系。

为了简化监控多个实例上的日志的过程， OpsWorks Stacks 支持 Amazon CloudWatch 日志。您可以在 OpsWorks Stacks 中启用图层级别的 CloudWatch 日志。 CloudWatch 日志集成适用于基于 Chef 11.10 和 Chef 12 Linux 的堆栈。启用 “ CloudWatch 日志” 会产生额外费用，因此请在开始之前查看 [Amaz CloudWatch on P](https://aws.amazon.com/cloudwatch/pricing/) ricing。

CloudWatch Logs 监视选定的日志中是否出现了用户指定的模式。例如，您可以监控关于某个字词 (例如 `NullReferenceException`) 的出现的日志，或计算出现这个字词的数量。启用 CloudWatch Logs in OpsWorks Stacks 后，Stac OpsWorks ks 代理会将日志发送到 CloudWatch Logs。有关 CloudWatch 日志的更多信息，请参阅[ CloudWatch 日志入门](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_GettingStarted.html)。

## 先决条件
<a name="w2ab1c14c65c15b9"></a>

在启用 CloudWatch 日志之前，您的实例必须在 Chef 11.10 堆栈中运行 3444 或更高版本的 OpsWorks 堆栈代理，在 Chef 12 堆栈中运行版本为 4023 或更高版本。对于使用 CloudWatch 日志监控的任何实例，您还必须使用兼容的实例配置文件。

如果您使用的是自定义实例配置文件（ OpsWorks Stacks 在创建堆栈时未提供该配置文件），则 OpsWorks Stacks 无法自动升级实例配置文件。您必须使用 IAM 手动将**AWSOpsWorksCloudWatchLogs**策略附加到您的个人资料。相关信息，请参阅*IAM 用户指南*中的[管理 IAM 策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#attach-managed-policy-console)。

如果您需要升级代理版本或实例配置文件，当您打开 “**层” 页面上的 “ CloudWatch 日志” 选项卡时， OpsWorks Stacks 会显示类似于以下屏幕截图**的提醒。

![\[CloudWatch “层” 页面上的 “日志” 选项卡\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/cw_logs_upgrade.png)


更新层中所有实例上的代理可能要花费一些时间。如果您尝试在代理升级完成之前在层上启用 CloudWatch 日志，则会看到类似于以下内容的消息。

![\[CloudWatch “层” 页面上的 “日志” 选项卡\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/cloudwatch_logs_upgrade_time.png)


## 启用 CloudWatch 日志
<a name="w2ab1c14c65c15c11"></a>

1. **完成所有必需的代理和实例配置文件升级后，您可以通过将 CloudWatch 日志选项卡上的滑块控件设置为开启来启用**CloudWatch 日志**。**  
![\[CloudWatch 日志滑块控件\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/cw_logs_enable_switch.png)

1. 要流式传输命令日志，请将 **Stream command logs** 滑块设置为 **On**。这会将您层实例上的 Chef 活动和用户启动的命令的 CloudWatch 日志发送到 Logs。

   当您打开日志 URL 的目标时，这些日志中包含的数据与您在[DescribeCommands](https://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeCommands.html)操作结果中看到的数据非常吻合。它包括关于 `setup`、`configure`、`deploy`、`undeploy`、`start`、`stop` 和配方运行命令的数据。

1. 要流式传输在您的层实例上的自定义位置中存储的活动日志 (如 `/var/log/apache/myapp/mylog*`)，请在 **Stream custom logs** 字符串框中键入自定义位置，然后选择 **Add** (**\$1**)。

1. 选择**保存**。几分钟后， OpsWorks Stacks 日志流应会在 CloudWatch 日志控制台中可见。  
![\[CloudWatch 日志已启用\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/cw_logs_enabled.png)

## 关闭 CloudWatch 日志
<a name="w2ab1c14c65c15c13"></a>

要关闭 CloudWatch 日志，请编辑您的图层设置。

1. 在您的层属性页面上，选择 **Edit**。  
![\[“Layer (层)”属性页面上的“Edit (编辑)”按钮\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/cw_logs_enabled_edit.png)

1. 在编辑页面上，选择**CloudWatch 日志**选项卡。

1. 在 “**CloudWatch 日志**” 区域中，关闭 “**流式传输” 命令日志**。选择自定义日志上的 **X** 以从日志流中删除它们 (如果适用)。

1. 选择**保存**。

### 从日志中删除流式处理日 CloudWatch 志
<a name="w2ab1c14c65c15c13b7"></a>

关闭从 OpsWorks 堆栈流式传输 CloudWatch 日志后，日志管理控制台中仍可使用现有 CloudWatch 日志。您存储的日志仍然产生费用，除非您将日志导出到 Amazon S3 中或删除它们。有关将日志导出到 S3 的更多信息，请参阅[将日志数据导出到 Amazon S3](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/S3Export.html)。

您可以在日志管理控制台中删除日志流和日志组，也可以通过运行[https://docs.aws.amazon.com/cli/latest/reference/logs/delete-log-stream.html](https://docs.aws.amazon.com/cli/latest/reference/logs/delete-log-stream.html)和[https://docs.aws.amazon.com/cli/latest/reference/logs/delete-log-group.html](https://docs.aws.amazon.com/cli/latest/reference/logs/delete-log-group.html) AWS CLI 命令来删除 CloudWatch 日志流和日志组。有关更改日志保留期限的更多信息，请参阅[更改日志中的 CloudWatch 日志数据保留](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SettingLogRetention.html)期。

## 在日志中管理您的 CloudWatch 日志
<a name="w2ab1c14c65c15c15"></a>

您正在流式传输的日志在 CloudWatch 日志控制台中进行管理。

![\[CloudWatch 日志控制台\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/cw_logs_dash.png)


OpsWorks 自动创建默认日志组和日志流。 OpsWorks Stacks 数据的日志组拥有与以下样式相匹配的名称：

*stack\$1name*`/`*layer\$1name*`/`*chef\$1log\$1name*

自定义日志拥有与以下样式相匹配的名称：

*/stack\$1name/layer\$1short\$1name/file\$1path\$1name*。 通过删除特殊字符（例如星号 (\$1)），可以使路径名更易于理解。

在日志中找到日志后，您可以将 CloudWatch 日志[组织成组](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Create-Log-Group.html)，[通过创建指标筛选器来搜索和筛选日志](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html)，以及[创建自定义警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ConsoleAlarms.html)。

## 将 Chef 12.2 Windows 层配置为使用 CloudWatch 日志
<a name="w2ab1c14c65c15c17"></a>

CloudWatch 基于 Windows 的实例不支持日志自动集成。“日**CloudWatch 志**” 选项卡在 Chef 12.2 堆栈中的图层上不可用。要为基于 Windows 的实例手动启用流式传输到 CloudWatch 日志，请执行以下操作。
+ 更新基于 Windows 的实例的实例配置文件，以便 Logs CloudWatch 代理具有相应的权限。**AWSOpsWorksCloudWatchLogs** 策略语句显示需要哪些权限。

  通常，您仅执行一次该任务。之后，对于层中的所有 Windows 实例，您可以使用更新后的实例配置文件。
+ 编辑每个实例上的以下 JSON 配置文件。此文件包括日志流首选项，如要监控哪些日志。

  `%PROGRAMFILES%\Amazon\Ec2ConfigService\Settings\AWS.EC2.Windows.CloudWatch.json`

您可以创建用于处理所需任务的自定义配方，并将它们分配给 Chef 12.2 层的 **Setup** 事件，从而自动执行上述两项任务。每次您在这些图层上启动新实例时， OpsWorks Stacks 会在实例完成启动后自动运行您的配方，从而 CloudWatch 启用 Logs。

要关闭基于 Windows 的实例上的 CloudWatch 日志，请撤消该过程。清除 “**EC2 服务属性**” 对话框中的 “**启用 CloudWatch 日志集成**” 复选框，从`AWS.EC2.Windows.CloudWatch.json`文件中删除日志流首选项；并停止运行任何自动为 Chef 12.2 层中的新实例分配 CloudWatch 日志权限的 Chef 配方。