Application Signals 支持的系统 - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Application Signals 支持的系统

Application Signals 在 Amazon EKS、本机 Kubernetes、Amazon ECS 和 Amazon EC2 上受支持并经过测试。在 Amazon EC2 上启用 Application Signals 的指令应适用于任何支持 CloudWatch 代理和 Amazon Distro for OpenTelemetry 的平台,但这些指令尚未在其他平台上进行过测试。

Java 兼容性

Application Signals 支持 Java 应用程序,也支持与适用于 OpenTelemetry 的 Amazon Distro 相同的 Java 库和框架。有关更多信息,请参阅 Supported libraries, frameworks, application servers, and JVMs

支持 JVM 版本 8、11 和 17。

Python 兼容性

Python 兼容性

Application Signals 支持与 Amazon Distro for OpenTelemetry 相同的库和框架。有关更多信息,请参阅 opentelemetry-python-contrib 上的 Supported packages

支持 Python 版本 3.8 及更高版本。

在为 Python 应用程序启用 Application Signals 之前,请注意以下注意事项。

  • 在某些容器化应用程序中,缺少 PYTHONPATH 环境变量有时可能会导致应用程序无法启动。要解决此问题,请确保将 PYTHONPATH 环境变量设置为应用程序工作目录的位置。这是由于 OpenTelemetry 自动检测的已知问题造成的。有关此问题的更多信息,请参阅 Python autoinstrumentation setting of PYTHONPATH is not compliant(PYTHONPATH 的 Python 自动检测设置不兼容)。

  • 对于 Django 应用程序,还有其他必需的配置,这些配置在 OpenTelemetry Python 文档中进行了概述。

    • 使用 --noreload 标志可防止自动重新加载。

    • DJANGO_SETTINGS_MODULE 环境变量设置为 Django 应用程序 settings.py 文件的位置。这样可确保 OpenTelemetry 能够正确访问您的 Django 设置,并与之集成。

.NET 兼容性

Application Signals 支持在 Amazon EKS、Amazon EC2、Amazon ECS 以及在 Amazon EC2 上运行的 Kubernetes 上将 .NET 应用程序与适用于 Open Telemetry 的 Amazon Distro(ADOT)仪表化工具结合使用。

此版本支持 .NET 6 和 8 以及 .NET Framework 4.6.2 和更高版本。

Application Signals 支持在 x86-64 或 ARM64 CPU 上运行的 .NET 应用程序,并且支持 Linux x64、Linux ARM64、Microsoft Windows Server 2022 x64 和 Microsoft Windows Server 2019 x64 操作系统。

Node.js 兼容性

Application Signals 支持与 Amazon Distro for OpenTelemetry 相同的 Node.js 库和框架。有关更多信息,请参阅支持的检测

此版本支持 Node.js 版本 14、16、18、20 和 22。

使用 ESM 的 Node.js 的已知限制

Amazon Distro for Opentelemetry Node.js 支持两种模块系统:ECMAScript 模块(ESM)和 CommonJS(CJS)。要启用 Application Signals,我们建议您使用 CJS 模块格式,因为 OpenTelemetry JavaScript 对 ESM 的支持处于实验阶段且仍在进行中。有关更多详情,请参阅 GitHub 上的 ECMAScript Modules vs. CommonJS

要确定您的应用程序是否使用 CJS 而不是 ESM,请确保您的应用程序不满足启用 ESM 的条件。有关这些条件的更多信息,请参阅 Node.js 文档中的 Enabling

Amazon Distro for Opentelemetry Node.js 根据 OpenTelemetry JavaScript 对 ESM 的实验性支持为 ESM 提供有限的支持。这意味着以下条件:

  • Node.js 版本必须为 18.19.0 或更高版本。

  • 您要检测的 Node.js 应用程序必须包含 @aws/aws-distro-opentelemetry-node-autoinstrumentation@opentelemetry/instrumentation 作为依赖项。

  • 您要检测的 Node.js 应用程序必须通过以下节点选项启动:

    NODE_OPTIONS=' --import @aws/aws-distro-opentelemetry-node-autoinstrumentation/register --experimental-loader=@opentelemetry/instrumentation/hook.mjs'

为启用采用 Node.js ESM 模块格式的 Application Signals,我们为不同的平台提供了不同的设置:

已知问题

众所周知,Java SDK 版本 v1.32.5 中的运行时指标收集不适用于使用 JBoss Wildfly 的应用程序。此问题扩展到 Amazon CloudWatch 可观测性 EKS 附加组件,影响版本 2.3.0-eksbuild.12.5.0-eksbuild.1

如果您受到影响,请降级版本或通过向应用程序添加环境变量 OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false 来禁用运行时指标收集。