Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
使用 Amazon Distro for OpenTelemetry(ADOT)SDK 导出无收集器模式的追踪数据
可以使用 ADOT SDK 以无收集器模式直接将追踪数据发送到 OTLP 端点(用于追踪数据)。
默认情况下,当您启用 Transaction Search 时,Application Signals 将启用。Amazon Distro for OpenTelemetry 不支持 Application Signals,必须将其禁用。
先决条件
请确保启用 Transaction Search,以向 X-ray OTLP 端点发送跨度。有关更多信息,请参阅开始使用 Transaction Search。
为 Amazon EC2 设置 IAM 权限
按照以下步骤将 AWSXrayWriteOnlyPolicy
IAM 策略附加到 Amazon EC2 实例的 IAM 角色。
设置本地主机的 IAM 权限
遵照以下步骤创建可用于向本地主机提供权限的 IAM 用户。
通过 https://console.aws.amazon.com/cloudwatch/ 打开 CloudWatch 控制台。
选择用户,然后选择创建用户。
-
依次选择用户、创建用户。
-
在用户详细信息下的用户名中,输入新 IAM 用户的名称。这是 Amazon 的登录名,将用于对您的主机进行身份验证。
-
选择下一步。
-
在设置权限页面的权限选项下,选择直接附加策略。
-
从权限策略列表中,选择要添加到您的用户的 AWSXrayWriteOnlyPolicy
策略。
-
选择下一步。
-
在审核并创建页面上,确保您对用户名满意,并且 AWSXrayWriteOnlyPolicy
策略位于权限摘要下。
-
选择创建用户。
-
创建和检索您的 Amazon 访问密钥和秘密密钥:
-
在 IAM 控制台的导航窗格中,选择用户,然后选择您在上一步中所创建用户的用户名。
-
在用户的页面上,选择安全凭证选项卡。
-
在访问密钥部分,选择创建访问密钥。
-
对于创建访问密钥步骤 1,选择命令行界面 (CLI)。
-
对于创建访问密钥步骤 2,(可选)输入标记,然后选择下一步。
-
对于创建访问密钥步骤 3,选择下载.csv 文件以保存包含您的 IAM 用户访问密钥和秘密访问密钥的 .csv 文件。您在后续步骤中需要此信息。
-
选择完成。
-
通过输入以下命令,在本地主机中配置 Amazon 凭证。将 ACCESS_KEY_ID
和 SECRET_ACCESS_ID
替换为您在上一步中下载的 .csv 文件中新生成的访问密钥和秘密访问密钥。
$ aws configure
AWS Access Key ID [None]: ACCESS_KEY_ID
AWS Secret Access Key [None]: SECRET_ACCESS_ID
Default region name [None]: MY_REGION
Default output format [None]: json
启用 ADOT SDK
在 Java、Node.js、Python 和 .Net 上,可以将应用程序的追踪数据直接从 Amazon Distro for OpenTelemetry(ADOT)SDK 发送到 OTLP 端点。
- Java
-
-
下载最新版本的 Amazon Distro for OpenTelemetry Java 自动检测代理。您可以使用此命令下载最新版本:
curl -L -O https://github.com/aws-observability/aws-otel-java-instrumentation/releases/latest/download/aws-opentelemetry-agent.jar
要查看所有已发布版本,请参阅 aws-otel-java-instrumentation 发布信息。
为了启用直接将跟踪信息发送到 X-Ray OTLP 跟踪端点的导出器并优化效益,请在启动应用程序之前使用环境变量提供其他信息。
对于 OTEL_RESOURCE_ATTRIBUTES
变量,将以下信息指定为键值对:
(可选)service.name
设置服务的名称。这将作为应用程序的服务名称在 Application Signals 控制面板中显示。如果您不提供此键的值,则将使用默认值 UnknownService
。
(可选)deployment.environment
设置应用程序运行所在的环境。这将显示为应用程序的托管环境。如果您未指定此项,则使用以下默认值之一:
-
如果这是属于自动扩缩组的实例,则将其设置为 ec2:name-of-Auto-Scaling-group
-
如果这是不属于自动扩缩组的 Amazon EC2 实例,则将其设置为 ec2:default
-
如果这是本地主机,则将其设置为 generic:default
此环境变量仅供 Application Signals 使用,并转换为 X-Ray 跟踪注释和 CloudWatch 指标维度
对于 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
变量,指定 X-Ray OTLP 跟踪端点:https://xray.[AWSRegion
].amazonaws.com/v1/traces
。例如:
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://xray.us-west-2.amazonaws.com/v1/traces"
对于 JAVA_TOOL_OPTIONS
变量,指定存储 Amazon Distro for OpenTelemetry Java 自动检测代理的路径。
export JAVA_TOOL_OPTIONS=" -javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH"
例如:
export AWS_ADOT_JAVA_INSTRUMENTATION_PATH="./aws-opentelemetry-agent.jar"
对于 OTEL_METRICS_EXPORTER
变量,建议将该值设置为 none。
对于 OTEL_LOGS_EXPORTER
变量,建议将该值设置为 none。
对于 OTEL_TRACES_EXPORTER
变量,必须为其设置 otlp
的值(这是可选操作,如果未设置此环境变量,则使用默认值)。
对于 OTEL_EXPORTER_OTLP_PROTOCOL
变量,必须将该值设置为 http/protobuf
(这是可选操作,如果未设置此环境变量,则使用默认值)。X-Ray OTLP 端点目前仅支持 HTTP 协议。
您的应用程序现在应该使用 Amazon Distro for OpenTelemetry Java 检测运行并将生成跨度。这些跨度存储在账户的 aws/spans
CloudWatch LogsLogGroup 中。还可以在 CloudWatch 跟踪信息和指标控制台中查看与跨度相关的跟踪信息及指标。
使用您设置的环境变量启动应用程序。以下是启动脚本的示例。
(注意:以下配置仅支持适用于 Java 的 Amazon Distro for OpenTelemetry 自动检测代理 1.32.2 及更高版本。)
JAVA_TOOL_OPTIONS=" -javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH" \
OTEL_METRICS_EXPORTER=none \
OTEL_LOGS_EXPORTER=none \
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces \
OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME" \
java -jar $MY_JAVA_APP.jar
- Node.js
-
下载适用于 Node.js 的最新版本的 Amazon Distro for OpenTelemetry JavaScript 自动检测代理。可以使用以下命令进行安装:
npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation
要查看所有已发布版本的信息,请参阅 Amazon Distro for OpenTelemetry JavaScript 检测资料。
为了启用导出器以直接将跟踪信息发送到 X-Ray OTLP 端点并优化效益,请在启动应用程序之前使用环境变量提供其他信息。
对于 OTEL_RESOURCE_ATTRIBUTES
变量,将以下信息指定为键值对:
(可选)service.name
设置服务的名称。这将作为应用程序的服务名称在 Application Signals 控制面板中显示。如果您不提供此键的值,则将使用默认值 UnknownService
。
(可选)deployment.environment
设置应用程序运行所在的环境。这将作为应用程序的托管环境显示在 Application Signals 控制面板中。如果未指定此变量,则使用以下默认值之一:
-
如果这是属于自动扩缩组的实例,则将其设置为 ec2:name-of-Auto-Scaling-group
-
如果这是不属于自动扩缩组的 Amazon EC2 实例,则将其设置为 ec2:default
-
如果这是本地主机,则将其设置为 generic:default
此环境变量仅供 Application Signals 使用,并转换为 X-Ray 跟踪注释和 CloudWatch 指标维度。
对于 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
变量,指定 X-Ray OTLP 跟踪端点:https://xray.[AWSRegion
].amazonaws.com/v1/traces
。
例如:
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://xray.us-west-2.amazonaws.com/v1/traces"
对于 OTEL_METRICS_EXPORTER
变量,建议将该值设置为 none。Application Signals 指标由 OTLP 端点生成。
对于 OTEL_LOGS_EXPORTER
变量,建议将该值设置为 none。
对于 OTEL_TRACES_EXPORTER
变量,必须为其设置 otlp
的值(这是可选操作,如果未设置此环境变量,则使用默认值)。
对于 OTEL_EXPORTER_OTLP_PROTOCOL
变量,必须将该值设置为 http/protobuf
(这是可选操作,如果未设置此环境变量,则使用默认值)。X-Ray OTLP 端点目前仅支持 HTTP 协议。
您的应用程序现在应该使用 Amazon Distro for OpenTelemetry Java 检测运行并将生成跨度。这些跨度存储在账户的 aws/spans
CloudWatch LogsLogGroup 中。还可以在 CloudWatch 跟踪信息和指标控制台中查看与跨度相关的跟踪信息及指标。
使用您设置的环境变量启动应用程序。以下是启动脚本的示例。
(注意:将 $SVC_NAME
替换为您的应用程序的名称。此值将显示为您的应用程序的名称。
OTEL_METRICS_EXPORTER=none \
OTEL_LOGS_EXPORTER=none \
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces \
OTEL_RESOURCE_ATTRIBUTES="service.name=$SVC_NAME
" \
node —require '@aws/aws-distro-opentelemetry-node-autoinstrumentation/register' your-application.js
- Python
-
下载最新版本的 Amazon Distro for OpenTelemetry Python 自动检测代理。可以使用以下命令进行安装:
pip install aws-opentelemetry-distro
为了启用导出器以直接将跟踪信息发送到 X-Ray OTLP 端点并优化效益,请在启动应用程序之前使用环境变量提供其他信息。
对于 OTEL_RESOURCE_ATTRIBUTES
变量,将以下信息指定为键值对:
(可选)service.name
设置服务的名称。这将作为应用程序的服务名称在 Application Signals 控制面板中显示。如果您不提供此键的值,则将使用默认值 UnknownService
。
(可选)deployment.environment
设置应用程序运行所在的环境。这将作为应用程序的托管环境显示在 Application Signals 控制面板中。如果您未指定此项,则使用以下默认值之一:
-
如果这是属于自动扩缩组的实例,则将其设置为 ec2:name-of-Auto-Scaling-group
-
如果这是不属于自动扩缩组的 Amazon EC2 实例,则将其设置为 ec2:default
-
如果这是本地主机,则将其设置为 generic:default
此环境变量仅供 Application Signals 使用,并转换为 X-Ray 跟踪注释和 CloudWatch 指标维度。
对于 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
变量,指定 X-Ray OTLP 跟踪端点:https://xray.[AWSRegion
].amazonaws.com/v1/traces
。
例如:
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://xray.us-west-2.amazonaws.com/v1/traces"
对于 OTEL_METRICS_EXPORTER
变量,建议将该值设置为 none。Application Signals 指标由 OTLP 端点生成。
对于 OTEL_LOGS_EXPORTER
变量,建议将该值设置为 none。
对于 OTEL_TRACES_EXPORTER
变量,必须为其设置 otlp
的值(这是可选操作,如果未设置此环境变量,则使用默认值)。
对于 OTEL_EXPORTER_OTLP_PROTOCOL
变量,必须将该值设置为 http/protobuf
(这是可选操作,如果未设置此环境变量,则使用默认值)。X-Ray OTLP 端点目前仅支持 HTTP 协议。
您的应用程序现在应该使用 Amazon Distro for OpenTelemetry Java 检测运行并将生成跨度。这些跨度存储在账户的 aws/spans
CloudWatch LogsLogGroup 中。还可以在 CloudWatch 跟踪信息和指标控制台中查看与跨度相关的跟踪信息及指标。
使用您设置的环境变量启动应用程序。以下是启动脚本的示例。
(注意:将 $SVC_NAME
替换为您的应用程序名称,将 $PYTHON_APP
替换为应用程序的位置和名称。
OTEL_METRICS_EXPORTER=none \
OTEL_LOGS_EXPORTER=none \
OTEL_PYTHON_DISTRO=aws_distro \
OTEL_PYTHON_CONFIGURATOR=aws_configurator \
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces \
OTEL_RESOURCE_ATTRIBUTES="service.name=$SVC_NAME
" \
opentelemetry-instrument python $MY_PYTHON_APP
.py
- .Net
-
为了启用直接将跟踪信息发送到 X-Ray OTLP 跟踪端点的导出器并优化效益,请在启动应用程序之前设置环境变量以提供其他信息。这些变量对于设置 .NET 检测也是必需的。
将 OTEL_RESOURCE_ATTRIBUTES
环境变量中的 dotnet-service-name
替换为您选择的服务名称。
设置 OTEL_TRACES_EXPORTER=none
。
设置 OTEL_AWS_SIG_V4_ENABLED=true
。
Linux 的示例。
export INSTALL_DIR=OpenTelemetryDistribution
export CORECLR_ENABLE_PROFILING=1
export CORECLR_PROFILER={918728DD-259F-4A6A-AC2B-B85E1B658318}
export CORECLR_PROFILER_PATH=${INSTALL_DIR}/linux-x64/OpenTelemetry.AutoInstrumentation.Native.so
export DOTNET_ADDITIONAL_DEPS=${INSTALL_DIR}/AdditionalDeps
export DOTNET_SHARED_STORE=${INSTALL_DIR}/store
export DOTNET_STARTUP_HOOKS=${INSTALL_DIR}/net/OpenTelemetry.AutoInstrumentation.StartupHook.dll
export OTEL_DOTNET_AUTO_HOME=${INSTALL_DIR}
export OTEL_DOTNET_AUTO_PLUGINS="AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation"
export OTEL_TRACES_EXPORTER=none
export OTEL_AWS_SIG_V4_ENABLED=true
export OTEL_RESOURCE_ATTRIBUTES=service.name=dotnet-service-name
export OTEL_METRICS_EXPORTER=none
export OTEL_LOGS_EXPORTER=none
export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces
Windows Server 的示例。
$env:INSTALL_DIR = "OpenTelemetryDistribution"
$env:CORECLR_ENABLE_PROFILING = 1
$env:CORECLR_PROFILER = "{918728DD-259F-4A6A-AC2B-B85E1B658318}"
$env:CORECLR_PROFILER_PATH = Join-Path $env:INSTALL_DIR "win-x64/OpenTelemetry.AutoInstrumentation.Native.dll"
$env:DOTNET_ADDITIONAL_DEPS = Join-Path $env:INSTALL_DIR "AdditionalDeps"
$env:DOTNET_SHARED_STORE = Join-Path $env:INSTALL_DIR "store"
$env:DOTNET_STARTUP_HOOKS = Join-Path $env:INSTALL_DIR "net/OpenTelemetry.AutoInstrumentation.StartupHook.dll"
$env:OTEL_DOTNET_AUTO_HOME = $env:INSTALL_DIR
$env:OTEL_DOTNET_AUTO_PLUGINS = "AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation"
$env:OTEL_TRACES_EXPORTER=none
$env:OTEL_AWS_SIG_V4_ENABLED=true
$env:OTEL_RESOURCE_ATTRIBUTES=service.name=dotnet-service-name
$env:OTEL_METRICS_EXPORTER=none
$env:OTEL_LOGS_EXPORTER=none
$env:OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
$env:OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces
使用环境变量启动应用程序。
(可选)或者,您可以使用提供的安装脚本来帮助安装和设置 Amazon Distro for OpenTelemetry .NET 自动检测包。
对于 Linux,请从 GitHub 发布页面下载并安装 Bash 安装脚本:
# Download and Install
curl -L -O https://github.com/aws-observability/aws-otel-dotnet-instrumentation/releases/latest/download/aws-otel-dotnet-install.sh
chmod +x ./aws-otel-dotnet-install.sh
./aws-otel-dotnet-install.sh
# Instrument
. $HOME/.otel-dotnet-auto/instrument.shexport OTEL_RESOURCE_ATTRIBUTES=service.name=dotnet-service-name
对于 Windows Server,请从 GitHub 发布页面下载并安装 PowerShell 安装脚本:
# Download and Install
$module_url = "https://github.com/aws-observability/aws-otel-dotnet-instrumentation/releases/latest/download/AWS.Otel.DotNet.Auto.psm1"
$download_path = Join-Path $env:temp "AWS.Otel.DotNet.Auto.psm1"
Invoke-WebRequest -Uri $module_url -OutFile $download_path
Import-Module $download_path
Install-OpenTelemetryCore
# Instrument
Import-Module $download_path
Register-OpenTelemetryForCurrentSession -OTelServiceName "dotnet-service-name"
Register-OpenTelemetryForIIS
您可以在官方 NuGet 存储库中找到 Amazon Distro for OpenTelemetry .NET 自动检测包的 NuGet 包。请务必查看自述文件以获取说明。