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
使用命令行管理具有 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 -oconfiguration-file-s
Windows Server:
& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -oconfiguration-file-s
在这个命令中,-a fetch-config 加载 OpenTelemetry Collector 的配置。配置可能是默认配置,也可以是 Parameter Store 或本地文件中的自定义配置。-s 参数将使用此配置重新启动代理。
configuration-file 的值可以是 default 以使用默认的内置配置。要在 Parameter Store 中使用自定义配置,请指定 ssm:。如果您将配置存储在本地文件中,请将其指定为 your-configuration-parameter-namefile:。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 -oconfiguration-file-s
Windows Server:
& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a remove-config -oconfiguration-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 代理
在 https://console.aws.amazon.com/systems-manager/
处打开 Systems Manager 控制台。 在导航窗格中,选择 Run Command。
–或者–
如果打开了 Amazon Systems Manager 主页,请向下滚动并选择 Explore Run Command(浏览 Run Command)。
-
选择 Run command (运行命令)。
-
在命令文档列表中,选择 AmazonCloudWatch-ManageAgent。
-
在 Targets(目标)区域中,选择安装了 CloudWatch 代理的实例。
-
在操作列表中,选择配置。
-
在 Optional OpenTelemetry Configuration Source(可选的 OpenTelemetry 配置源)列表中,如果希望使用自定义配置,选择 ssm;要使用默认配置,选择 default(默认)。
-
在 Optional OpenTelemetry Configuration Location(可选的 OpenTelemetry 配置位置)框中,输入您创建并保存到 Systems Manager Parameter Store 的 OpenTelemetry 配置参数的名称,如前面的部分中所述。
-
(可选)如果要同时配置并启动 CloudWatch 代理进程,请执行以下操作:
-
在 Optional Configuration Source(可选的配置源)列表中,如果希望使用自定义配置,选择 ssm;要使用默认配置,选择 default(默认)。
-
在 Optional Configuration Location(可选的配置位置)框中,输入您创建并保存到 Systems Manager Parameter Store 的 CloudWatch 代理配置参数的名称。
-
-
在完成这些步骤后,在可选的重新启动列表中选择是以启动该代理。
-
选择 Run(运行)。
-
(可选)在 Targets and outputs(目标和输出)区域中,选择实例名称旁边的按钮,然后选择 View output(查看输出)。Systems Manager 将显示已成功启动该代理。
删除配置并停止 OpenTelemetry Collector 进程
在 https://console.aws.amazon.com/systems-manager/
处打开 Systems Manager 控制台。 在导航窗格中,选择 Run Command。
–或者–
如果打开了 Amazon Systems Manager 主页,请向下滚动并选择 Explore Run Command(浏览 Run Command)。
-
选择 Run command (运行命令)。
-
在命令文档列表中,选择 AmazonCloudWatch-ManageAgent。
-
在 Targets(目标)区域中,选择安装了 CloudWatch 代理的实例。
-
在 Actions(操作)列表中,选择 Configure (remove)(配置(移除))。
-
在 Optional OpenTelemetry(可选的配置源)列表中,选择 ssm。
-
在完成这些步骤后,在可选的重新启动列表中选择是以启动该代理。
-
选择 Run(运行)。
-
(可选)在 Targets and outputs(目标和输出)区域中,选择实例名称旁边的按钮,然后选择 View output(查看输出)。Systems Manager 将显示已成功启动该代理。
生成 OpenTelemetry 的指标和跟踪
Amazon 为应用程序提供了 OpenTelemetry 软件开发工具包和 Java 自动分析代理,用于生成 OpenTelemetry 指标和跟踪,并将它们馈送给 OpenTelemetry Collector。有关更多信息,请参阅下列内容: