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
支持 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,我们为不同的平台提供了不同的设置:
Amazon EKS:设置采用 ESM 模块格式的 Node.js 应用程序
使用挎斗策略的 Amazon ECS:Setting up a Node.js application with the ESM module format
使用进程守护程序策略的 Amazon ECS:Setting up a Node.js application with the ESM module format
使用 Amazon CDK 的 Amazon ECS:设置采用 ESM 模块格式的 Node.js 应用程序
Amazon EC2 – Setting up a Node.js application with the ESM module format
Kubernetes:设置采用 ESM 模块格式的 Node.js 应用程序
已知问题
众所周知,Java SDK 版本 v1.32.5 中的运行时指标收集不适用于使用 JBoss Wildfly 的应用程序。此问题扩展到 Amazon CloudWatch 可观测性 EKS 附加组件,影响版本 2.3.0-eksbuild.1
至 2.5.0-eksbuild.1
。
如果您受到影响,请降级版本或通过向应用程序添加环境变量 OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false
来禁用运行时指标收集。