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

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

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

您可以配置和使用 Amazon CloudWatch 代理从实例收集指标和日志,而不是使用Amazon Systems Manager执行这些任务的代理(SSM 代理)。CloudWatch 代理允许您收集到比使用 SSM 代理更多的 EC2 实例相关指标。此外,还可以使用 CloudWatch 代理从本地服务器收集指标。

您也可以将代理配置设置存储到 Systems Manager 参数存储中,以供 CloudWatch 代理使用。参数存储是Amazon Systems Manager。

注意

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

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

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

重要

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

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

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

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

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

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

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

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

有关监控会话管理器活动的信息,请参阅审核会话活动记录会话活动活动

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

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

在 32 位版本的Windows Server。

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

注意

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

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

重要

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

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

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

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

开始前的准备工作

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

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

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

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

自动迁移到 CloudWatch 代理

对于适用于的 EC2 实例Windows Server,您可以使用Amazon Systems Manager控制台或Amazon Command Line Interface(Amazon CLI)将自动迁移到 CloudWatch 代理作为日志收集工具。

注意

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

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

迁移成功后,请在 CloudWatch 中检查结果,确保正在接收预期的指标、日志或 Windows 事件日志。如果对结果满意,可以选择CloudWatch 代理配置设置存储在参数存储中。如果迁移不成功或者结果不符合预期,可以尝试使用 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.生产。示例通讯网络。要保留本地主机值,请指定值 {local_hostname} 而不是 {hostname}

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

  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在导航窗格中,选择Run Command,然后选择。Run Command

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

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

  5. 选择运行

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

  • 运行以下 命令:

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

    ID1ID2, 和ID3表示要更新的实例的 ID,例如I-02573 咖啡馆示例

手动迁移到 CloudWatch 代理

对于本地Windows Server实例或 EC2 实例Windows Server,请按照以下步骤将日志收集手动迁移到 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-11.production.ExampleCompany.com。要保留本地主机值,请指定值 {local_hostname} 而不是 {hostname}

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

  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在导航窗格中,选择Run Command,然后选择。Run Command

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

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

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

  6. 名称中,输入 AmazonCloudWatchAgent

  7. In版本,输入。latest(默认情况下尚未提供)。

  8. 选择运行

二:更新配置数据 JSON 格式

  • 要更新 CloudWatch 代理的现有配置设置的 JSON 格式,请使用Run Command,功能为Amazon Systems Manager,或者直接使用 RDP 连接登录实例,然后在实例上运行以下 Windows PowerShell 命令(一次运行一条命令)。

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

    {环境:程序文件}表示可找到包含 CloudWatch 代理的 Amazon 目录的位置,通常为C:\Program Files

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

  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在导航窗格中,选择Run Command,然后选择。Run Command

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

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

  5. 命令框中,输入以下两条命令。

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

    {环境:程序文件}表示可找到包含 CloudWatch 代理的 Amazon 目录的位置,通常为C:\Program Files

  6. 选择运行

四:在 SSM 代理(控制台)中关闭日志收集

  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在导航窗格中,选择Run Command,然后选择。Run Command

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

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

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

  6. 选择运行

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

CloudWatch 代理配置设置存储在参数存储中

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

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

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

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

{环境:程序文件}表示可找到包含 CloudWatch 代理的 Amazon 目录的位置,通常为C:\Program Files

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

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

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

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

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

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

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

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

    {环境:程序文件}表示Amazon目录,通常C:\Program Files

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

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

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

  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在导航窗格中,选择Run Command,然后选择。Run Command

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

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

  5. 操作列表中,选择。卸载

  6. 名称中,输入 AmazonCloudWatchAgent

  7. 选择运行

三:在 SSM 代理(控制台)中重新打开日志收集

  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在导航窗格中,选择Run Command,然后选择。Run Command

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

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

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

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

  7. 选择运行