将 Amazon CloudWatch Logs 与 AWS OpsWorks 堆栈配合使用 - AWS OpsWorks

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

将 Amazon CloudWatch Logs 与 AWS OpsWorks 堆栈配合使用

重要

AWS OpsWorks Stacks 不再接受新客户。在 2024 年 5 月 26 日之前,现有客户将能够照常使用 OpsWorks 控制台、API、CLI 和 CloudFormation 资源,届时这些工具或资源将停用。为准备此过渡,我们建议您尽快将堆栈过渡到AWS Systems Manager。有关更多信息,请参阅 AWS OpsWorks Stacks 生命周期终止常见问题解答将 AWS OpsWorks Stacks 应用程序迁移到 AWS Systems Manager Application Manager

为了简化监控多个实例上的日志的过程,AWS OpsWorks Stacks 支持 Amazon CloudWatch Logs。您可启用 AWS OpsWorks Stacks 中的层级别的 CloudWatch Logs。CloudWatch Logs 集成可以用于基于 Linux 的 Chef 11.10 和 Chef 12 堆栈。您在启用 CloudWatch Logs 时,会产生额外费用,因此在开始之前请查看 Amazon CloudWatch 定价

CloudWatch Logs 监控选定的日志,看是否有用户指定的模式出现。例如,您可以监控关于某个字词 (例如 NullReferenceException) 的出现的日志,或计算出现这个字词的数量。在 AWS OpsWorks Stacks 中启动 CloudWatch Logs 后,AWS OpsWorks Stacks 代理会将日志发送给 CloudWatch Logs。有关 CloudWatch Logs 的更多信息,请参阅 Amazon CloudWatch Logs 用户指南中的 CloudWatch Logs 入门

先决条件

您的实例必须在 Chef 11.10 堆栈中运行 3444 或更高版本的 AWS OpsWorks Stacks 代理,或在 Chef 12 堆栈中运行 4023 或更高版本的 &OPS; Stacks 代理,您才能启用 CloudWatch Logs。您还必须对您通过使用 CloudWatch Logs 监控的任何实例使用兼容的实例配置文件。

如果您使用自定义实例配置文件(当您创建堆栈时,AWS OpsWorks Stacks 不提供该配置文件),则 AWS OpsWorks Stacks 无法自动升级实例配置文件。您必须使用 IAM; 手动将 AWSOpsWorksCloudWatchLogs 策略附加到您的配置文件。相关信息,请参阅IAM 用户指南中的管理 IAM 策略

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


                “层”页面上的 CloudWatch Logs 选项卡

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


                “层”页面上的 CloudWatch Logs 选项卡

启用 CloudWatch Logs

  1. 所需的代理和实例配置文件升级完成后,您可以通过将 CloudWatch Logs 选项卡上的滑块控件设置为 On 来启用 CloudWatch Logs。

    
                        CloudWatch Logs 滑块控件
  2. 要流式传输命令日志,请将 Stream command logs 滑块设置为 On。这会将关于您的层实例上的 Chef 活动和用户发起的命令的日志发送给 CloudWatch Logs。

    这些日志中包含的数据与您在打开日志 URL 的目标时在 DescribeCommands 运算的结果中看到的内容非常匹配。它包括关于 setupconfiguredeployundeploystartstop 和配方运行命令的数据。

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

  4. 选择 Save(保存)。几分钟内,AWS OpsWorks Stacks 日志流将会显示在 CloudWatch Logs 控制台中。

    
                        CloudWatch Logs 已启用

关闭 CloudWatch Logs

要关闭 CloudWatch Logs,请编辑您的层设置。

  1. 在您的层属性页面上,选择 Edit

    
                        “Layer (层)”属性页面上的“Edit (编辑)”按钮
  2. 在编辑页面上,选择 CloudWatch Logs 选项卡。

  3. CloudWatch Logs 区域中,关闭 Stream command logs。选择自定义日志上的 X 以从日志流中删除它们 (如果适用)。

  4. 选择 Save(保存)。

从 CloudWatch Logs 中删除流式传输的日志

关闭从 AWS OpsWorks Stacks 进行的 CloudWatch Logs 流式传输后,现有日志在 CloudWatch Logs 管理控制台中仍然可用。您存储的日志仍然产生费用,除非您将日志导出到 Amazon S3 中或删除它们。有关将日志导出到 S3 的更多信息,请参阅将日志数据导出到 Amazon S3

您可以删除 CloudWatch Logs 管理控制台中的日志流和日志组,或通过运行delete-log-streamdelete-log-group AWS CLI 命令。有关更改日志保留期限的更多信息,请参阅更改 CloudWatch Logs 中的日志数据保留

在 CloudWatch Logs 中管理您的日志

您流式传输的日志是在 CloudWatch Logs 控制台中管理的。


                CloudWatch Logs 控制台

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

stack_name/layer_name/chef_log_name

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

/stack_name/layer_short_name/file_path_name。删除特殊字符 (如星号 (*)) 可使路径名称更具可读性。

当您在 CloudWatch Logs 中找到日志后,您可以将日志整理到组中通过创建指标筛选条件来搜索和筛选日志,以及创建自定义警报

配置 Chef 12.2 Windows 层以使用 CloudWatch 日志

基于 Windows 的实例不支持 CloudWatch Logs 自动集成。CloudWatch Logs 选项卡在 Chef 12.2 堆栈中的层上不可用。要针对基于 Windows 的实例手动启用至 CloudWatch Logs 的流式传输,请执行以下操作。

  • 更新基于 Windows 的实例的实例配置文件,以便 CloudWatch Logs 代理拥有适当的权限。AWSOpsWorksCloudWatchLogs 策略语句显示需要哪些权限。

    通常,您仅执行一次该任务。之后,对于层中的所有 Windows 实例,您可以使用更新后的实例配置文件。

  • 编辑每个实例上的以下 JSON 配置文件。此文件包括日志流首选项,如要监控哪些日志。

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

您可以创建用于处理所需任务的自定义配方,并将它们分配给 Chef 12.2 层的 Setup 事件,从而自动执行上述两项任务。每当您在这些层上启动新实例时,AWS OpsWorks Stacks 都会在实例完成启动后自动运行您的配方,从而启用 CloudWatch Logs。有关为基于 Windows 的实例手动配置 CloudWatch Logs 流的更多信息,请参见以下内容。

若要在基于 Windows 的实例上关闭 CloudWatch Logs,请逆向执行此过程。清除 EC2 Service Properties 对话框中的 Enable CloudWatch Logs integration 复选框,删除 AWS.EC2.Windows.CloudWatch.json 文件中的日志流首选项,并停止运行自动将 CloudWatch Logs 权限分配给 Chef 12.2 层中的新实例的任何 Chef 配方。