CloudWatch 代理对 OpenTelemetry 的支持 - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

CloudWatch 代理对 OpenTelemetry 的支持

版本 1.247347.3 和更高版本的 CloudWatch 代理具有嵌入式 Amazon OpenTelemetry Collector。这使得 CloudWatch 代理能够与 Amazon OpenTelemetry API 和软件开发工具包集成,并将应用程序遥测数据从 EC2 实例发送到 CloudWatch 和 Amazon X-Ray。此功能适用于希望在不安装或配置多个代理的情况下使用 OpenTelemetry 开始监控的现有 CloudWatch 代理用户。有关 Amazon OpenTelemetry 的更多信息,请参阅 Amazon Distro for OpenTelemetry

通过使用 CloudWatch 代理和嵌入式 Amazon OpenTelemetry Collector,您不需要安装单独的 Amazon OpenTelemetry Collector。

具有嵌入式 OpenTelemetry Collector 的 CloudWatch 代理可以从 Amazon OpenTelemetry 开发工具包接收指标和追踪,并将其发布到 CloudWatch 和 X-Ray。嵌入在 CloudWatch 代理中的 OpenTelemetry Collector 具有与 Amazon OpenTelemetry Collector 相同的行为,使用它意味着您无需安装单独的 Amazon OpenTelemetry Collector。但是,如果您确实在同一台服务器上安装了两者,请注意 CloudWatch 代理中的嵌入式 OpenTelemetry Collector 和 Amazon OpenTelemetry Collector 应位于不同的目录中,通过不同的工具进行管理,并作为单独的进程运行。例如,如果您在同一台服务器中配置并运行这两个进程,请确保它们用于侦听的本地端口不会相互冲突。

在 EC2 实例上运行的 CloudWatch 代理支持 CloudWatch 代理中的 OpenTelemetry,但不支持在容器中或本地部署服务器上运行的 CloudWatch 代理。Linux 实例支持 x86-64 和 ARM64 架构,Windows Server 实例支持 x86-64 架构。

IAM 权限

为了能够发布 OpenTelemetry 指标和跟踪,除了 CloudWatchAgentServerPolicy 托管式策略中列出的权限之外,CloudWatch 代理需要额外的 IAM 权限。在您希望使用代理的 OpenTelemetry 支持的服务器上,将以下策略授予给附加到实例的 CloudWatch 代理的 IAM 角色。如果您在文档中使用了默认的建议名称,则此角色名为 CloudWatchAgentServerRole

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", "xray:GetSamplingRules", "xray:GetSamplingTargets", "xray:GetSamplingStatisticSummaries", "ssm:GetParameters" ], "Resource": "*" } ] }

CloudWatch 代理 OpenTelemetry 配置

亚马逊为嵌入式 OpenTelemetry Collector 提供默认配置文件。此配置允许通过默认端口收集 OpenTelemetry 指标和追踪。如果默认配置适用于您,则无需再执行任何配置步骤。要查看此默认配置文件的内容,请参阅 GitHub 上的 config.yaml

如果要自定义配置文件,请参阅 Amazon Distro for OpenTelemetry 文档。如果执行此操作,则在创建自定义配置文件后,可以将其上传到 Parameter Store 中,也可以将其复制到要使用它的每个服务器的文件系统中。有关将其上传到 Parameter Store 的更多信息,请参阅 将 CloudWatch 代理配置文件上传到 Systems Manager Parameter Store

使用命令行管理具有 OpenTelemetry 支持的 CloudWatch 代理

具有嵌入式 OpenTelemetry 支持的 CloudWatch 代理以两个进程运行:CloudWatch 代理进程和 OpenTelemetry Collector 进程。启动 CloudWatch 代理时,每个进程单独决定是否可以成功启动。

您可以运行 amazon-cloudwatch-agent-ctl 脚本来管理 OpenTelemetry Collector 进程。要配置和启动嵌入式 OpenTelemetry Collector,请运行以下命令之一:

Linux:

sudo /usr/bin/amazon-cloudwatch-agent-ctl -a fetch-config -o configuration-file -s

Windows Server:

& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -o configuration-file -s

在这个命令中,-a fetch-config 加载 OpenTelemetry Collector 的配置。配置可能是默认配置,也可以是 Parameter Store 或本地文件中的自定义配置。-s 参数将使用此配置重新启动代理。

configuration-file 的值可以是 default 以使用默认的内置配置。要在 Parameter Store 中使用自定义配置,请指定 ssm:your-configuration-parameter-name。如果您将配置存储在本地文件中,请将其指定为 file:your-configuration-file.yaml

例如,以下操作使用 OpenTelemetry Collector 的默认内置配置来配置并启动代理的 OpenTelemetry 进程。

sudo /usr/bin/amazon-cloudwatch-agent-ctl -a fetch-config -o default -s
重要

使用 -o 选项配置代理的 OpenTelemetry Collector 进程,然后在配置 CloudWatch 代理流程时使用 -c 选项。以下命令是一个示例,使用各自的默认内置配置在 Linux 中启动嵌入式 OpenTelemetry Collector 和 CloudWatch 代理:

sudo /usr/bin/amazon-cloudwatch-agent-ctl -a fetch-config -o default -c default -s

使用命令行停止并启动 CloudWatch 代理中的 OpenTelemetry Collector

仅停止 OpenTelemetry Collector 进程

要停止代理中的 OpenTelemetry 进程,但让 CloudWatch 代理进程继续运行,您可以使用命令告诉代理移除 OpenTelemetry 配置,然后重新启动代理,并且不对 OpenTelemetry Collector 进行配置。

在以下命令中,-a remove-config -o 指示 CloudWatch 代理删除 OpenTelemetry Collector 的配置文件,-s 重新启动 OpenTelemetry Collector,而不使用能够有效地使其停止的任何配置。

Linux:

sudo /usr/bin/amazon-cloudwatch-agent-ctl -a remove-config -o configuration-file -s

Windows Server:

& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a remove-config -o configuration-file -s

在此命令中,对于 configuration-file,您可以指定 all 来删除当前应用的任何配置。例如,以下命令将移除配置并停止 Linux 中已嵌入的 OpenTelemtry Collector:

sudo /usr/bin/amazon-cloudwatch-agent-ctl -a remove-config -o all -s

停止两个代理进程

您可以使用 -a stop 参数停止嵌入式 OpenTelemetry Collector 进程和 CloudWatch 代理进程(如果在运行中)。

Linux:

sudo /usr/bin/amazon-cloudwatch-agent-ctl -a stop

Windows Server:

& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a stop

启动两个代理进程

您可以使用 -a start 参数启动嵌入式 OpenTelemetry Collector 进程和 CloudWatch 代理进程(如果已配置)。如果从未配置过 OpenTelemetry Collector,则使用此参数将不会启动它。如果您之前从未启动过 CloudWatch 代理进程,则此命令将使用默认配置启动该进程。

Linux:

sudo /usr/bin/amazon-cloudwatch-agent-ctl -a start

Windows Server:

& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a start

使用 Systems Manager 通过嵌入式 OpenTelemetry Collector 管理 CloudWatch 代理

您还可以使用 Systems Manager 通过 OpenTelemetry Collector 管理 CloudWatch 代理。

使用 Run Command 配置并启动 CloudWatch 代理

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

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

    –或者–

    如果打开了 Amazon Systems Manager 主页,请向下滚动并选择 Explore Run Command(浏览 Run Command)

  3. 选择 Run command (运行命令)

  4. 命令文档列表中,选择 AmazonCloudWatch-ManageAgent

  5. Targets(目标)区域中,选择安装了 CloudWatch 代理的实例。

  6. 操作列表中,选择配置

  7. Optional OpenTelemetry Configuration Source(可选的 OpenTelemetry 配置源)列表中,如果希望使用自定义配置,选择 ssm;要使用默认配置,选择 default(默认)

  8. Optional OpenTelemetry Configuration Location(可选的 OpenTelemetry 配置位置)框中,输入您创建并保存到 Systems Manager Parameter Store 的 OpenTelemetry 配置参数的名称,如前面的部分中所述。

  9. (可选)如果要同时配置并启动 CloudWatch 代理进程,请执行以下操作:

    1. Optional Configuration Source(可选的配置源)列表中,如果希望使用自定义配置,选择 ssm;要使用默认配置,选择 default(默认)

    2. Optional Configuration Location(可选的配置位置)框中,输入您创建并保存到 Systems Manager Parameter Store 的 CloudWatch 代理配置参数的名称。

  10. 在完成这些步骤后,在可选的重新启动列表中选择以启动该代理。

  11. 选择 Run (运行)

  12. (可选)在 Targets and outputs(目标和输出)区域中,选择实例名称旁边的按钮,然后选择 View output(查看输出)。Systems Manager 将显示已成功启动该代理。

删除配置并停止 OpenTelemetry Collector 进程

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

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

    –或者–

    如果打开了 Amazon Systems Manager 主页,请向下滚动并选择 Explore Run Command(浏览 Run Command)

  3. 选择 Run command (运行命令)

  4. 命令文档列表中,选择 AmazonCloudWatch-ManageAgent

  5. Targets(目标)区域中,选择安装了 CloudWatch 代理的实例。

  6. Actions(操作)列表中,选择 Configure (remove)(配置(移除))

  7. Optional OpenTelemetry(可选的配置源)列表中,选择 ssm

  8. 在完成这些步骤后,在可选的重新启动列表中选择以启动该代理。

  9. 选择 Run (运行)

  10. (可选)在 Targets and outputs(目标和输出)区域中,选择实例名称旁边的按钮,然后选择 View output(查看输出)。Systems Manager 将显示已成功启动该代理。

生成 OpenTelemetry 的指标和跟踪

Amazon 为应用程序提供了 OpenTelemetry 开发工具包和 Java 自动分析代理,用于生成 OpenTelemetry 指标和跟踪,并将它们馈送给 OpenTelemetry Collector。有关更多信息,请参阅下列内容: