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

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

CloudWatch 代理中的 OpenTelemetry 支持

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

通过将 CloudWatch 代理与嵌入式 AWS OpenTelemetry 收集器结合使用,您无需安装单独的 AWS OpenTelemetry 收集器。

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

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

IAM 权限

为了能够发布 OpenTelemetry 指标和跟踪,除了 CloudWatch CloudWatchAgentServerPolicy 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 配置

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

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

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

具有嵌入式 OpenTelemetry 支持的CloudWatch代理作为两个进程运行CloudWatch:代理进程和 OpenTelemetry 收集器进程。当您启动CloudWatch代理时,每个进程单独确定它能否成功启动。

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

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 收集器的配置。该配置可以是默认配置,也可以是来自 Parameter Store 或本地文件的自定义配置。-s 参数使用此配置重新启动 代理。

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

例如,以下内容配置并启动代理的 OpenTelemetry 进程,该进程具有 OpenTelemetry 收集器的默认内置配置。

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

使用 -o 选项配置代理的 OpenTelemetry 收集器进程,并在配置-c代理进程时使用 CloudWatch 选项。以下命令是一个示例,用于在 Linux 中启动嵌入式 OpenTelemetry 收集器和 CloudWatch 代理,每个代理具有默认内置配置:

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

使用命令行停止和启动 CloudWatch 代理中的 OpenTelemetry 收集器

仅停止 OpenTelemetry 收集器进程

要停止代理中的 OpenTelemetry 进程,但让CloudWatch代理进程保持运行状态,您可以使用 命令告知代理删除 OpenTelemetry 配置,然后在没有 OpenTelemetry Collector 配置的情况下重新启动代理。

在以下命令中, -a remove-config -o 指示CloudWatch代理删除 OpenTelemetry 收集器的配置文件,并-s重新启动 OpenTelemetry 收集器而不使用任何配置,这会有效地停止它。

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 收集器:

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

停止两个代理进程

您可以使用 -a stop 参数停止嵌入式 OpenTelemetry 收集器进程和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 收集器进程和 CloudWatch 代理进程(如果已配置)。如果您从未配置 OpenTelemetry 收集器,则使用此参数不会启动它。如果您之前从未启动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 收集器管理 CloudWatch 代理

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

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

  1. Open the Systems Manager console at https://console.amazonaws.cn/systems-manager/.

  2. In the navigation pane, choose Run Command.

    -or-

    If the AWS Systems Manager home page opens, scroll down and choose Explore Run Command.

  3. 选择运行命令

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

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

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

  7. 可选的 OpenTelemetry Configuration Source (OpenTelemetry 配置源) 列表中,如果要使用自定义配置,请选择 ssm,或者选择 default (默认) 以使用默认配置。

  8. 可选的 OpenTelemetry 配置位置框中,输入您创建并保存到 Systems Manager 的 OpenTelemetry 配置参数的名称Parameter Store,如前面几节中所述。

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

    1. 可选的配置源列表中,如果要使用自定义配置,请选择 ssm,或者选择默认值以使用默认配置。

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

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

  11. 选择运行

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

删除配置并停止 OpenTelemetry 收集器过程

  1. Open the Systems Manager console at https://console.amazonaws.cn/systems-manager/.

  2. In the navigation pane, choose Run Command.

    -or-

    If the AWS Systems Manager home page opens, scroll down and choose Explore Run Command.

  3. 选择运行命令

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

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

  6. Action 列表中,选择 configure (remove)。

  7. 可选的 OpenTelemetry Configuration Source (OpenTelemetry 配置源) 列表中,选择 all (全部)。

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

  9. 选择运行

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

生成 OpenTelemetry 指标和跟踪

AWS 提供 OpenTelemetry SDKs和 Java Auto Instrumentation Agent,以供您的应用程序用于生成 OpenTelemetry 指标并跟踪这些指标并将其提供给 OpenTelemetry 收集器。有关更多信息,请参阅下列内容: