将实例日志发送到 CloudWatch Logs (CloudWatch 代理) - AWS Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

将实例日志发送到 CloudWatch Logs (CloudWatch 代理)

您可以配置和使用 Amazon CloudWatch 代理 从实例收集指标和日志,而不是使用 SSM 代理 完成此类任务。通过 CloudWatch 代理,您能够收集到比使用 SSM 代理. 更多的 EC2 实例相关指标。此外,还可以使用 从本地服务器收集指标。CloudWatch 代理.

也可以将代理配置设置存储在 Systems Manager Parameter Store 中,以供 CloudWatch 代理. 使用。

注意

目前,AWS Systems Manager 支持从 SSM 代理 迁移到 CloudWatch 代理,以仅在 64 位版本 Windows 上收集日志和指标。有关在其他操作系统上设置 CloudWatch 代理 的信息,以及有关使用 CloudWatch 代理 的完整信息,请参阅 Amazon CloudWatch 用户指南 中的使用 CloudWatch 代理 从 Amazon Elastic Compute Cloud 实例和本地服务器收集指标

您可以在其他受支持的操作系统上使用 CloudWatch 代理,但无法使用 Systems Manager 执行工具迁移。

SSM 代理将有关执行、计划操作、错误和运行状况的信息写入每个实例上的日志文件。手动连接到实例以查看日志文件并对 SSM 代理 的问题进行排查是耗时的工作。为更有效地监控实例,可以配置 SSM 代理 本身或 CloudWatch 代理 将此日志数据发送到 Amazon CloudWatch Logs.

重要

统一的 CloudWatch 代理已取代 SSM 代理作为将日志数据发送到 Amazon CloudWatch Logs 的工具。对使用 SSM 代理 发送日志数据的支持将在不久的将来被弃用。我们建议您的日志收集过程仅使用统一的 CloudWatch 代理。有关更多信息,请参阅以下主题:

借助 CloudWatch Logs,可以实时监控日志数据,可以通过创建一个或多个指标筛选器来搜索和筛选日志数据,可以存档历史数据并在需要时进行检索。有关 的更多信息CloudWatch Logs,请参阅 Amazon CloudWatch Logs User Guide

配置代理将日志数据发送到 Amazon CloudWatch Logs 有以下好处:

  • 您的所有 SSM 代理 日志文件的集中日志文件存储。

  • 实现对文件的更快访问,以调查错误。

  • 无限日志文件保留 (可配置)。

  • 无论实例的状态如何,都可以维护和访问日志。

  • 对其他 CloudWatch 功能 (例如指标和警报) 的访问。

有关监控 Session Manager 活动的信息,请参阅审核会话活动记录会话活动

将 Windows Server 实例日志收集迁移到 CloudWatch 代理

如果当前在支持的 SSM 代理 实例上使用 Windows Server 将 SSM 代理 日志文件发送到 Amazon CloudWatch Logs,则可以使用 Systems Manager 从 SSM 代理 迁移到 CloudWatch 代理 作为日志收集工具,并迁移配置设置。

CloudWatch 代理 在 32-bit版本的 上不受支持Windows Server。

对于 Windows Server 的 64 位 EC2 实例,您可以自动或手动执行到 CloudWatch 代理的迁移。对于本地服务器和虚拟机,必须手动执行该过程。

注意

迁移期间,发送到 CloudWatch 的数据可能会中断或重复发送。迁移完成后,指标和日志数据会再次准确记录到 CloudWatch 中。

建议先在数量有限的实例上测试迁移,再将整个队列迁移到 CloudWatch 代理. 迁移后,如果更倾向于使用 SSM 代理 进行日志收集,可以改为使用 &SSM-ag;。

重要

在以下情况下,不能使用本主题中介绍的步骤向 CloudWatch 代理 迁移:

  • SSM 代理 的现有配置指定多个区域。

  • SSM 代理 的现有配置指定多组访问/私有密钥凭证。

在上述情况下,必须在 SSM 代理 中禁用日志收集并安装 CloudWatch 代理,而不执行迁移过程。有关更多信息,请参阅以下主题:

开始前的准备工作

在开始迁移到 CloudWatch 代理 进行日志收集前,请确保将对其执行迁移的实例满足以下要求:

  • 操作系统为 64 位 Windows Server 版本。

  • SSM 代理实例上安装了 2.2.93.0 或更高版本。

  • SSM 代理已在实例上配置 进行监控。

自动迁移到 CloudWatch 代理

仅限对于 Windows Server 的 EC2 实例,您可以使用 AWS Systems Manager 控制台或 AWS CLI 自动迁移到 CloudWatch 代理以作为日志收集工具。

注意

目前,AWS Systems Manager 支持从 SSM 代理 迁移到 CloudWatch 代理,以仅在 64 位版本 Windows 上收集日志和指标。有关在其他操作系统上设置 CloudWatch 代理 的信息,以及有关使用 CloudWatch 代理 的完整信息,请参阅 Amazon CloudWatch 用户指南 中的使用 CloudWatch 代理 从 Amazon Elastic Compute Cloud 实例和本地服务器收集指标

您可以在其他受支持的操作系统上使用 CloudWatch 代理,但无法使用 Systems Manager 执行工具迁移。

迁移成功后,请在 CloudWatch 中检查结果,确保正在接收预期的指标、日志或 Windows 事件日志。如果对结果满意,可以选择将 CloudWatch 代理配置设置存储到 Parameter Store 中. 如果迁移不成功或者结果不符合预期,可以回滚到使用 进行日志收集SSM 代理.

注意

如果需要迁移包含 {hostname} 条目的源配置文件,则请注意,在迁移完成后,{hostname} 条目会更改字段的值。例如,假设以下"LogStream": "{hostname}"条目映射到名为 MyLogServer001 的服务器。

{ "Id": "CloudWatchIISLogs", "FullName": "AWS.EC2.Windows.CloudWatch.CloudWatchLogsOutput,AWS.EC2.Windows.CloudWatch", "Parameters": { "AccessKey": "", "SecretKey": "", "Region": "us-east-1", "LogGroup": "Production-Windows-IIS", "LogStream": "{hostname}" } }

迁移完成后,该条目将映射到域,例如 ip-11-1-1-11.production.ExampleCompany.com。要保留本地主机值,请指定值 {local_hostname} 而不是 {hostname}.

自动迁移到 CloudWatch 代理 (控制台)

  1. 通过以下网址打开 AWS Systems Manager 控制台:https://console.amazonaws.cn/systems-manager/

  2. 在导航窗格中,选择 Run Command,然后选择 Run command (运行命令).

  3. Command document (命令文档) 列表中,选择 AmazonCloudWatch-MigrateCloudWatchAgent.

  4. Targets (目标) 部分中,选择一个选项,然后选择要更新的实例。

  5. 选择运行.

自动迁移到 CloudWatch 代理 (AWS CLI)

  • 运行以下命令:

    aws ssm send-command --document-name AmazonCloudWatch-MigrateCloudWatchAgent --targets Key=instanceids,Values=ID1,ID2,ID3

    ID1, ID2、 和 ID3 表示要更新的实例IDs的 ,例如 i-02573cafcfEXAMPLE

手动迁移到 CloudWatch 代理

对于本地 Windows Server 实例或 Windows Server 的 EC2 实例,请按照以下步骤将日志收集手动迁移到 Amazon CloudWatch 代理.

注意

如果需要迁移包含 {hostname} 条目的源配置文件,则请注意,在迁移完成后,{hostname} 条目会更改字段的值。例如,假设以下"LogStream": "{hostname}"条目映射到名为 MyLogServer001 的服务器。

{ "Id": "CloudWatchIISLogs", "FullName": "AWS.EC2.Windows.CloudWatch.CloudWatchLogsOutput,AWS.EC2.Windows.CloudWatch", "Parameters": { "AccessKey": "", "SecretKey": "", "Region": "us-east-1", "LogGroup": "Production-Windows-IIS", "LogStream": "{hostname}" } }

迁移完成后,该条目将映射到域,例如 ip-11-1-1-11.production.ExampleCompany.com。要保留本地主机值,请指定值 {local_hostname} 而不是 {hostname}.

第一步:安装 CloudWatch 代理(控制台)

  1. 通过以下网址打开 AWS Systems Manager 控制台:https://console.amazonaws.cn/systems-manager/

  2. 在导航窗格中,选择 Run Command,然后选择 Run command (运行命令).

  3. Command document (命令文档) 列表中,选择 AWS-ConfigureAWSPackage.

  4. Targets (目标) 部分中,选择一个选项,然后选择要更新的实例。

  5. Action (操作) 列表中,选择 Install.

  6. Name (名称) 中键入 AmazonCloudWatchAgent.

  7. Version 中,键入 latest 如果默认情况下尚未提供它。

  8. 选择运行.

第二步:更新配置数据 JSON 格式

  • 要更新 的现有配置设置的 JSON 格式CloudWatch 代理,请使用 AWS Systems Manager Run Command ,或者使用 RDP 连接直接登录到实例,以在实例上运行以下 Windows PowerShell 命令,一次运行一个命令:

    cd ${Env:ProgramFiles}\\Amazon\\AmazonCloudWatchAgent
    .\\amazon-cloudwatch-agent-config-wizard.exe --isNonInteractiveWindowsMigration

    {Env:ProgramFiles} 表示CloudWatch 代理可以找到包含 的 Amazon 文件夹的位置,通常为 C:\\Program Files。

第三步:配置并启动 CloudWatch 代理(控制台)

  1. 通过以下网址打开 AWS Systems Manager 控制台:https://console.amazonaws.cn/systems-manager/

  2. 在导航窗格中,选择 Run Command,然后选择 Run command (运行命令).

  3. Command document (命令文档) 列表中,选择 AWS-RunPowerShellScript.

  4. Targets (目标) 部分中,选择一个选项,然后选择要更新的实例。

  5. Commands (命令) 框中,输入以下两个命令:

    cd ${Env:ProgramFiles}\Amazon\AmazonCloudWatchAgent
    .\amazon-cloudwatch-agent-ctl.ps1 -a fetch-config -m ec2 -c file:config.json -s

    {Env:ProgramFiles} 表示CloudWatch 代理可以找到包含 的 Amazon 文件夹的位置,通常为 C:\\Program Files。

  6. 选择运行.

第四步:在 SSM 代理 中禁用日志收集(控制台)

  1. 通过以下网址打开 AWS Systems Manager 控制台:https://console.amazonaws.cn/systems-manager/

  2. 在导航窗格中,选择 Run Command,然后选择 Run command (运行命令).

  3. Command document (命令文档) 列表中,选择 AWS-ConfigurecloudWatch.

  4. Targets (目标) 部分中,选择一个选项,然后选择要更新的实例。

  5. Status (状态) 列表中,选择 Disabled.

  6. 选择运行.

    完成上述步骤后,请在 CloudWatch 中检查日志,确保正在接收预期的指标、日志或 Windows 事件日志。如果对结果满意,可以选择将 CloudWatch 代理配置设置存储到 Parameter Store 中. 如果迁移不成功或者结果不符合预期,可以回滚到使用 进行日志收集SSM 代理.

将 CloudWatch 代理配置设置存储到 Parameter Store 中

您可以将 Amazon CloudWatch 代理 配置文件的内容存储到 Parameter Store. 中。通过将此配置数据保存在一个参数中,多个实例可以从它获取配置设置,您不必再在实例上创建或手动更新配置文件。例如,您可以使用 Run Command 将参数的内容写入多个实例的配置文件,或使用 状态管理器 帮助避免实例队列间的 CloudWatch 代理 配置设置出现配置偏差。

运行 CloudWatch 代理 配置向导时,可以选择让向导将配置设置保存为 Parameter Store. 中的新参数。有关运行 CloudWatch 代理配置向导的信息,请参阅使用向导创建 CloudWatch 代理配置文件.

如果在运行向导时没有选择将设置保存为参数的选项,或者手动创建了 CloudWatch 代理 配置文件,则可以在以下文件中检索要在实例上保存为参数的数据:

${Env:ProgramFiles}\Amazon\AmazonCloudWatchAgent\config.json

{Env:ProgramFiles} 表示CloudWatch 代理可以找到包含 的 Amazon 文件夹的位置,通常为 C:\\Program Files。

建议在此实例以外的位置保留此文件中 JSON 内容的备份。

有关创建参数的信息,请参阅创建 Systems Manager 参数

有关 的更多信息CloudWatch 代理,请参阅 中的使用 Amazon Elastic Compute Cloud 代理从 CloudWatch 实例和本地服务器收集指标Amazon CloudWatch 用户指南

回滚到使用 进行日志收集SSM 代理

如果需要恢复为使用 SSM 代理 进行日志收集,请执行以下步骤。

第一步:从 检索配置数据SSM 代理

  1. 在需要恢复为使用 SSM 代理 收集日志的实例上,找到 SSM 代理 配置文件的内容。此 JSON 文件通常位于以下位置:

    ${Env:ProgramFiles}\\Amazon\\SSM\\Plugins\\awsCloudWatch\\AWS.EC2.Windows.CloudWatch.json

    {Env:ProgramFiles} 表示可找到Amazon文件夹的位置,通常为 C:\\Program Files。

  2. 将这些数据复制到一个文本文件中,以便在后面的步骤中使用。

    建议在此实例以外的位置存储此 JSON 的备份。

第二步:卸载 CloudWatch 代理(控制台)

  1. 通过以下网址打开 AWS Systems Manager 控制台:https://console.amazonaws.cn/systems-manager/

  2. 在导航窗格中,选择 Run Command,然后选择 Run command (运行命令).

  3. Command document (命令文档) 列表中,选择 AWS-ConfigureAWSPackage.

  4. Targets (目标) 部分中,选择一个选项,然后选择要更新的实例。

  5. Action (操作) 列表中,选择 Uninstall.

  6. Name (名称) 中键入 AmazonCloudWatchAgent.

  7. 选择运行.

第三步:在 SSM 代理 中重新启用日志收集(控制台)

  1. 通过以下网址打开 AWS Systems Manager 控制台:https://console.amazonaws.cn/systems-manager/

  2. 在导航窗格中,选择 Run Command,然后选择 Run command (运行命令).

  3. Command document (命令文档) 列表中,选择 AWS-ConfigureCloudWatch.

  4. Targets (目标) 部分中,选择一个选项,然后选择要更新的实例。

  5. Status (状态) 列表中,选择 Enabled.

  6. Properties (属性) 框中,将保存的旧配置数据的内容粘贴到文本文件中。

  7. 选择运行.