使用 Amazon Distro for OpenTelemetry(ADOT)SDK 导出无收集器模式的遥测数据
您可以使用 ADOT SDK 以无收集器模式直接将追踪信息和日志发送到 OTLP 端点。
注意
Application Signals 包含事务搜索功能。为避免重复计费,请在 ADOT SDK 中禁用 Application Signals,同时将 OTEL_AWS_APPLICATION_SIGNALS_ENABLED
设为 false(默认设置)。
先决条件
请确保启用 Transaction Search,以向 X-ray OTLP 端点发送跨度。有关更多信息,请参阅开始使用 Transaction Search。
为角色设置 IAM 权限
按照以下步骤将必要 IAM 策略附加到 IAM 角色:
跟踪:
-
通过 https://console.aws.amazon.com/iam/
打开 IAM 控制台。 -
选择角色,然后找到并选择配置的角色。
-
在权限选项卡下,依次选择添加权限、附加策略。
-
使用搜索框,搜索
AWSXrayWriteOnlyPolicy
。 -
选择
AWSXrayWriteOnlyPolicy
策略,然后选择添加权限。
日志:
-
通过 https://console.aws.amazon.com/iam/
打开 IAM 控制台。 -
选择角色,然后找到并选择配置的角色。
-
在权限选项卡中,选择添加权限,然后选择创建内联策略。
-
为服务选择 CloudWatch Logs,然后在允许的操作下筛选并选择:
logs:PutLogEvents logs:DescribeLogGroups logs:DescribeLogStreams
-
以下是授予所需权限的示例 IAM 策略:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchLogsAccess", "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:log-group:*" ] } ] }
配置凭证提供者
ADOT 使用 Amazon SDK 自动发现将遥测数据导出到 Amazon 所需的有效凭证。有关为特定环境配置凭证的指导说明,请参阅关于 Amazon SDK 如何检索凭证的文档。
设置本地主机的 IAM 凭证:
通过输入以下命令,在本地主机中配置 Amazon 凭证。将 ACCESS_KEY_ID
和 SECRET_ACCESS_KEY
替换为所配置 IAM 角色或用户的凭证。
$ 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
-
注意
必须采用 2.11.2 或更高版本的 ADOT 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 版本
上查看有关所有已发布版本的信息。 要启用直接向 OTLP 端点发送遥测数据的其他导出器并充分发挥其优势,请在启动应用程序之前配置以下环境变量:
跟踪:
-
设置
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_TRACES_EXPORTER
设置为otlp
(此为可选设置,如果未设置此环境变量,则使用默认值)。 -
将
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL
变量设置为http/protobuf
(此为可选设置,如果未设置此环境变量,则使用默认值)。 -
设置
OTEL_RESOURCE_ATTRIBUTES
变量以将以下信息指定为键值对。这些环境变量供 Application Signals 使用,并会被转换为 X-Ray 跟踪注释和 CloudWatch 指标维度。-
(可选)
service.name
设置服务的名称。这将作为应用程序的服务名称在 Application Signals 控制面板中显示。如果您不提供此键的值,将使用默认值UnknownService
。 -
(可选)
deployment.environment
设置应用程序运行所在的环境。这将显示为应用程序的托管环境。 -
(可选)要启用跟踪日志关联,请在
OTEL_RESOURCE_ATTRIBUTES
中为应用程序的日志组设置其他环境变量aws.log.group.names
。这样,应用程序的跟踪和指标便可与这些特定日志组的相关日志条目相关联。对于此变量,将$YOUR_APPLICATION_LOG_GROUP
替换为应用程序的日志组名称。如果您有多个日志组,则可以使用和号(&
)分隔它们,如以下示例所示:aws.log.group.names=log-group-1&log-group-2
。要启用指标与日志关联的功能,设置此当前环境变量已足够。有关更多信息,请参阅启用指标与日志关联。要启用跟踪与日志关联,您还需要更改应用程序中的日志记录配置。有关更多信息,请参阅启用跟踪与日志关联。
-
日志:
-
设置
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT
以指定 CloudWatch OTLP 日志端点:https://logs.[
AWSRegion
].amazonaws.com/v1/logs例如:
export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT="https://logs.us-west-2.amazonaws.com/v1/logs"
-
设置
OTEL_EXPORTER_OTLP_LOGS_HEADERS
以指定日志导出到的目标日志组和日志流(注意:这些必须在运行 ADOT 之前创建):x-aws-log-group=[CW-LOG-GROUP-NAME],x-aws-log-stream=[CW-LOG-STREAM-NAME]
例如:
export OTEL_EXPORTER_OTLP_LOGS_HEADERS=x-aws-log-group=MyLogGroup,x-aws-log-stream=default
-
将
OTEL_LOGS_EXPORTER
设置为otlp
(此为可选设置,如果未设置此环境变量,则使用默认值)。 -
将
OTEL_EXPORTER_OTLP_LOGS_PROTOCOL
变量设置为http/protobuf
(此为可选设置,如果未设置此环境变量,则使用默认值)。
-
设置
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"
您的应用程序现在应已启用 ADOT Java 插桩并正常运行,且会生成追踪跨度和日志文件。跨度将存储在
aws/spans
CloudWatch 日志组中,而日志将存储在OTEL_EXPORTER_OTLP_LOGS_HEADERS
标题指定的日志组中。您还可以在 CloudWatch 跟踪和指标控制台中查看与跨度相关的日志及指标。使用上一步中列出的环境变量启动应用程序。以下是启动脚本的示例。
JAVA_TOOL_OPTIONS=" -javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH" \ OTEL_METRICS_EXPORTER=none \ OTEL_TRACES_EXPORTER=otlp \ OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf \ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces \ OTEL_LOGS_EXPORTER=otlp \ OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=http/protobuf \ OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=https://logs.us-east-1.amazonaws.com/v1/logs \ OTEL_EXPORTER_OTLP_LOGS_HEADERS=x-aws-log-group=MyLogGroup,x-aws-log-stream=default OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME" \ java -jar $MY_JAVA_APP.jar
-
- Node.js
-
注意
必须采用 0.7.0 或更高版本的 ADOT JavaScript,才能使用这些功能。
下载最新版本的 Amazon Distro for OpenTelemetry Java 自动插桩。通过运行以下 命令安装它。
npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation
您可以在 aws-otel-js-instrumentation 版本
发布页面查看所有已发布版本的详细信息。 要启用直接向 OTLP 端点发送遥测数据的其他导出器并充分发挥其优势,请在启动应用程序之前配置以下环境变量:
跟踪:
-
设置
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_TRACES_EXPORTER
设置为otlp
(此为可选设置,如果未设置此环境变量,则使用默认值)。 -
将
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL
变量设置为http/protobuf
(此为可选设置,如果未设置此环境变量,则使用默认值)。 -
设置
OTEL_RESOURCE_ATTRIBUTES
变量以将以下信息指定为键值对。这些环境变量供 Application Signals 使用,并会被转换为 X-Ray 跟踪注释和 CloudWatch 指标维度。-
(可选)
service.name
设置服务的名称。这将作为应用程序的服务名称在 Application Signals 控制面板中显示。如果您不提供此键的值,将使用默认值UnknownService
。 -
(可选)
deployment.environment
设置应用程序运行所在的环境。这将显示为应用程序的托管环境。 -
(可选)要启用跟踪日志关联,请在
OTEL_RESOURCE_ATTRIBUTES
中为应用程序的日志组设置其他环境变量aws.log.group.names
。这样,应用程序的跟踪和指标便可与这些特定日志组的相关日志条目相关联。对于此变量,将$YOUR_APPLICATION_LOG_GROUP
替换为应用程序的日志组名称。如果您有多个日志组,则可以使用和号(&
)分隔它们,如以下示例所示:aws.log.group.names=log-group-1&log-group-2
。要启用指标与日志关联的功能,设置此当前环境变量已足够。有关更多信息,请参阅启用指标与日志关联。要启用跟踪与日志关联,您还需要更改应用程序中的日志记录配置。有关更多信息,请参阅启用跟踪与日志关联。
-
日志:
-
设置
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT
以指定 CloudWatch OTLP 日志端点:https://logs.[
AWSRegion
].amazonaws.com/v1/logs例如:
export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT="https://logs.us-west-2.amazonaws.com/v1/logs"
-
设置
OTEL_EXPORTER_OTLP_LOGS_HEADERS
以指定日志导出到的目标日志组和日志流(注意:这些必须在运行 ADOT 之前创建):x-aws-log-group=[CW-LOG-GROUP-NAME],x-aws-log-stream=[CW-LOG-STREAM-NAME]
例如:
export OTEL_EXPORTER_OTLP_LOGS_HEADERS=x-aws-log-group=MyLogGroup,x-aws-log-stream=default
-
将
OTEL_LOGS_EXPORTER
设置为otlp
(此为可选设置,如果未设置此环境变量,则使用默认值)。 -
将
OTEL_EXPORTER_OTLP_LOGS_PROTOCOL
变量设置为http/protobuf
(此为可选设置,如果未设置此环境变量,则使用默认值)。
-
您的应用程序现在应已启用 ADOT JavaScript 插桩并正常运行,且会生成追踪跨度和日志文件。跨度将存储在
aws/spans
CloudWatch 日志组中,而日志将存储在OTEL_EXPORTER_OTLP_LOGS_HEADERS
标题指定的日志组中。您还可以在 CloudWatch 跟踪和指标控制台中查看与跨度相关的日志及指标。使用上一步中列出的环境变量启动应用程序。以下是启动脚本的示例。
将
$SVC_NAME
替换为您的应用程序的名称。此变量将显示为应用程序的名称。OTEL_METRICS_EXPORTER=none \ OTEL_TRACES_EXPORTER=otlp \ OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf \ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces \ OTEL_LOGS_EXPORTER=otlp \ OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=http/protobuf \ OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=https://logs.us-east-1.amazonaws.com/v1/logs \ OTEL_EXPORTER_OTLP_LOGS_HEADERS=x-aws-log-group=MyLogGroup,x-aws-log-stream=default OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME" \ node --require '@aws/aws-distro-opentelemetry-node-autoinstrumentation/register' your-application.js
- Python
-
注意
必须采用 0.10.0 或更高版本的 ADOT Python 并且已安装
botocore
,才能使用这些功能。下载最新版本的 Amazon Distro for OpenTelemetry Python 自动插桩。通过运行以下 命令安装它。
pip install aws-opentelemetry-distro
您可以在 aws-otel-python-instrumentation 版本
发布页面查看所有已发布版本的详细信息。 要启用直接向 OTLP 端点发送遥测数据的其他导出器并充分发挥其优势,请在启动应用程序之前配置以下环境变量:
对于跟踪和日志配置,必须设置以下环境变量:
-
OTEL_PYTHON_DISTRO
到aws_distro
-
OTEL_PYTHON_CONFIGURATOR
到aws_configurator
跟踪:
-
设置
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_TRACES_EXPORTER
设置为otlp
(此为可选设置,如果未设置此环境变量,则使用默认值)。 -
将
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL
变量设置为http/protobuf
(此为可选设置,如果未设置此环境变量,则使用默认值)。 -
设置
OTEL_RESOURCE_ATTRIBUTES
变量以将以下信息指定为键值对。这些环境变量供 Application Signals 使用,并会被转换为 X-Ray 跟踪注释和 CloudWatch 指标维度。-
(可选)
service.name
设置服务的名称。这将作为应用程序的服务名称在 Application Signals 控制面板中显示。如果您不提供此键的值,将使用默认值UnknownService
。 -
(可选)
deployment.environment
设置应用程序运行所在的环境。这将显示为应用程序的托管环境。 -
(可选)要启用跟踪日志关联,请在
OTEL_RESOURCE_ATTRIBUTES
中为应用程序的日志组设置其他环境变量aws.log.group.names
。这样,应用程序的跟踪和指标便可与这些特定日志组的相关日志条目相关联。对于此变量,将$YOUR_APPLICATION_LOG_GROUP
替换为应用程序的日志组名称。如果您有多个日志组,则可以使用和号(&
)分隔它们,如以下示例所示:aws.log.group.names=log-group-1&log-group-2
。要启用指标与日志关联的功能,设置此当前环境变量已足够。有关更多信息,请参阅启用指标与日志关联。要启用跟踪与日志关联,您还需要更改应用程序中的日志记录配置。有关更多信息,请参阅启用跟踪与日志关联。
-
日志:
-
将
OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED
设置为true
-
设置
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT
以指定 CloudWatch OTLP 日志端点:https://logs.[
AWSRegion
].amazonaws.com/v1/logs例如:
export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT="https://logs.us-west-2.amazonaws.com/v1/logs"
-
设置
OTEL_EXPORTER_OTLP_LOGS_HEADERS
以指定日志导出到的目标日志组和日志流(注意:这些必须在运行 ADOT 之前创建):x-aws-log-group=[CW-LOG-GROUP-NAME],x-aws-log-stream=[CW-LOG-STREAM-NAME]
例如:
export OTEL_EXPORTER_OTLP_LOGS_HEADERS=x-aws-log-group=MyLogGroup,x-aws-log-stream=default
-
将
OTEL_LOGS_EXPORTER
设置为otlp
(此为可选设置,如果未设置此环境变量,则使用默认值)。 -
将
OTEL_EXPORTER_OTLP_LOGS_PROTOCOL
变量设置为http/protobuf
(此为可选设置,如果未设置此环境变量,则使用默认值)。
-
您的应用程序现在应已启用 ADOT Python 插桩并正常运行,且会生成追踪跨度和日志文件。跨度将存储在
aws/spans
CloudWatch 日志组中,而日志将存储在OTEL_EXPORTER_OTLP_LOGS_HEADERS
标题指定的日志组中。您还可以在 CloudWatch 跟踪和指标控制台中查看与跨度相关的日志及指标。使用上一步中列出的环境变量启动应用程序。以下是启动脚本的示例。
将
$SVC_NAME
替换为您的应用程序的名称。此变量将显示为应用程序的名称。将
$PYTHON_APP
替换为您的应用程序的位置和名称。OTEL_METRICS_EXPORTER=none \ OTEL_TRACES_EXPORTER=otlp \ OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf \ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces \ OTEL_LOGS_EXPORTER=otlp \ OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=http/protobuf \ OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=https://logs.us-east-1.amazonaws.com/v1/logs \ OTEL_EXPORTER_OTLP_LOGS_HEADERS=x-aws-log-group=MyLogGroup,x-aws-log-stream=default OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED=true OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME" \ opentelemetry-instrument python $MY_PYTHON_APP.py
- .Net
-
注意
-
必须采用 1.8.0 或更高版本的 ADOT .NET,才能使用这些功能。
-
目前不支持压缩。
-
当前不支持日志。
下载最新版本适用于 OpenTelemetry 的 Amazon Distro .NET 自动仪表化工具包。您可以在 aws-otel-dotnet-instrumentation 版本
发布页面查看所有已发布版本的详细信息。 要启用直接向 OTLP 端点发送遥测数据的其他导出器并充分发挥其优势,请在启动应用程序之前配置以下环境变量(将
OTEL_RESOURCE_ATTRIBUTES
环境变量中的dotnet-service-name
替换为您选择的服务名称):跟踪:
-
必须将
OTEL_TRACES_EXPORTER
设置为none
-
必须将
OTEL_AWS_SIG_V4_ENABLED
设置为true
此功能在 .NET 中不会自动启用。该环境变量是专门为了在 .NET 插桩中明确标识该使用案例而专门要求设置的。此要求仅针对 .NET,不适用于其他支持的语言。
以下是适用于 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_TRACES_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_TRACES_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 包。请务必查看自述文件 以获取说明。
-