在 Amazon EC2 上启用 Application Signals
对于在 Amazon EC2 或其他实例类型上运行的应用程序,您可以自行安装并配置 CloudWatch 代理和 AWS Distro for OpenTelemetry。在这些启用了自定义 Application Signals 设置的架构上,Application Signals 不会自动发现您的服务的名称或运行这些服务的主机或集群。您必须在自定义设置期间指定这些名称,而您指定的名称就是显示在 Application Signals 控制面板上的名称。
本节中的说明适用于 Java、Python 和 .NET 应用程序。这些步骤已在 Amazon EC2 实例上进行了测试,但预计也可以在支持 AWS Distro for OpenTelemetry 的其他架构上运行。
要求
如果您已经在打算为 Application Signals 启用的应用程序中使用 OpenTelemetry,请在启用 Application Signals 之前参阅 OpenTelemetry 兼容性。
步骤 1:在账户中启用 Application Signals
如果您尚未在此账户中启用 Application Signals,则必须向 Application Signals 授予发现您的服务所需的权限。为此,请执行以下操作:您的账户只需执行一次该操作。
步骤 2:下载并启动 CloudWatch 代理
作为在 Amazon EC2 实例或本地主机上启用 Application Signals 的一部分安装 CloudWatch 代理
将最新版本的 CloudWatch 代理下载到实例。如果实例已安装 CloudWatch 代理,您可能需要对其进行更新。只有在 2023 年 11 月 30 日或之后发布的代理版本支持 CloudWatch Application Signals。
有关下载 CloudWatch 代理的信息,请参阅 下载 CloudWatch 代理软件包。
启动 CloudWatch 代理之前,请将其配置为启用 Application Signals。以下示例是 CloudWatch 代理配置,该配置为 EC2 主机上的指标和跟踪启用 Application Signals。
建议您将此文件放在 Linux 系统中的 /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
。
{
"traces": {
"traces_collected": {
"application_signals": {}
}
},
"logs": {
"metrics_collected": {
"application_signals": {}
}
}
}
将 CloudWatchAgentServerPolicy IAM 策略附加到 Amazon EC2 实例的 IAM 角色。有关本地主机的权限,请参阅 本地服务器的权限。
登录 AWS Management Console,然后打开 IAM 控制台:https://console.aws.amazon.com/iam/。
选择角色并查找您的 Amazon EC2 实例使用的角色。然后选择该角色的名称。
在权限选项卡中,选择添加权限、附加策略。
查找 CloudWatchAgentServerPolicy。如果需要,请使用搜索框。然后选择该策略对应的复选框,选择添加权限。
通过输入以下命令启动 CloudWatch 代理。将 agent-config-file-path
替换为指向 CloudWatch 代理配置文件的路径,例如 ./amazon-cloudwatch-agent.json
。必须包含 file:
前缀,如图所示。
export CONFIG_FILE_PATH=./amazon-cloudwatch-agent.json
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
-a fetch-config \
-m ec2 -s -c file:agent-config-file-path
本地服务器的权限
对于本地主机,您需要为设备提供 AWS 授权。
设置本地主机的权限
创建用于向本地主机提供权限的 IAM 用户:
通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。
依次选择用户、创建用户。
在用户详情中,为用户名输入新 IAM 用户的名称。这是 AWS 的登录名,将用于对您的主机进行身份验证。然后选择下一个
在设置权限页面的权限选项下,选择直接附加策略。
从权限策略列表中,选择要添加到您的用户的 CloudWatchAgentServerPolicy 策略。然后选择下一步。
在查看并创建页面上,确保您对用户名满意,并且 CloudWatchAgentServerPolicy 策略位于权限摘要中。
选择 Create user。
创建和检索您的 AWS 访问密钥和秘密密钥:
在 IAM 控制台的导航窗格中,选择用户,然后选择您在上一步中所创建用户的用户名。
在用户的页面上,选择安全凭证选项卡。然后,在访问密钥部分,选择创建访问密钥。
对于创建访问密钥步骤 1,选择命令行界面 (CLI)。
对于创建访问密钥步骤 2,(可选)输入标记,然后选择下一步。
对于创建访问密钥步骤 3,选择下载.csv 文件以保存包含您的 IAM 用户访问密钥和秘密访问密钥的 .csv 文件。您在后续步骤中需要此信息。
选择完成。
通过输入以下命令,在本地主机中配置 AWS 凭证。将 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
步骤 3:检测您的应用程序并将其启动
下一步是为 CloudWatch Application Signals 检测您的应用程序。
- Java
-
检测 Java 应用程序,作为在 Amazon EC2 实例或本地主机上启用 Application Signals 的一部分流程
下载最新版本的 AWS Distro for OpenTelemetry Java 自动检测代理。您可以使用此链接下载最新版本。您可以在 aws-otel-java-instrumentation 版本上查看有关所有已发布版本的信息。
要优化 Application Signals 的优势,请在启动应用程序之前使用环境变量提供更多信息。此信息将显示在 Application Signals 控制面板中。
对于 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
变量,指定要将跟踪导出到的基本端点 URL。CloudWatch 代理将 4316 作为其 OTLP 端口公开。在 Amazon EC2 上,由于应用程序与本地 CloudWatch 代理通信,因此您应将此值设置为 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces
对于 OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT
变量,指定要将指标导出到的基本端点 URL。CloudWatch 代理将 4316 作为其 OTLP 端口公开。在 Amazon EC2 上,由于应用程序与本地 CloudWatch 代理通信,因此您应将此值设置为 OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://localhost:4316/v1/metrics
对于 JAVA_TOOL_OPTIONS
变量,指定存储 AWS 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
。这将禁用其他指标导出程序,因此仅使用 Application Signals 导出程序。
将 OTEL_AWS_APPLICATION_SIGNALS_ENABLED
设置为 true
。这会从跟踪中生成 Application Signals 指标。
使用上一步中列出的环境变量启动应用程序。以下是启动脚本的示例。
以下配置仅支持适用于 Java 的 AWS Distro for OpenTelemetry 自动检测代理版本 1.32.2 及更高版本。
JAVA_TOOL_OPTIONS=" -javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH" \
OTEL_METRICS_EXPORTER=none \
OTEL_LOGS_EXPORT=none \
OTEL_AWS_APPLICATION_SIGNALS_ENABLED=true \
OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://localhost:4316/v1/metrics \
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces \
OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME
" \
java -jar $MY_JAVA_APP.jar
(可选)要启用跟踪日志关联,请在 OTEL_RESOURCE_ATTRIBUTES
中为应用程序的日志组设置其他环境变量 aws.log.group.names
。这样,应用程序的跟踪和指标便可与这些特定日志组的相关日志条目相关联。对于此变量,将 $YOUR_APPLICATION_LOG_GROUP
替换为应用程序的日志组名称。如果您有多个日志组,则可以使用和号(&
)分隔它们,如以下示例所示:aws.log.group.names=log-group-1&log-group-2
。要启用指标与日志关联的功能,设置此当前环境变量已足够。有关更多信息,请参阅 启用指标与日志关联。要启用跟踪与日志关联,您还需要更改应用程序中的日志记录配置。有关更多信息,请参阅 启用跟踪与日志关联。
以下是帮助启用日志关联的启动脚本示例。
JAVA_TOOL_OPTIONS=" -javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH" \
OTEL_METRICS_EXPORTER=none \
OTEL_LOGS_EXPORT=none \
OTEL_AWS_APPLICATION_SIGNALS_ENABLED=true \
OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://localhost:4316/v1/metrics \
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces \
OTEL_RESOURCE_ATTRIBUTES="aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP
,service.name=$YOUR_SVC_NAME
" \
java -jar $MY_JAVA_APP.jar
- Python
-
检测 Python 应用程序,作为在 Amazon EC2 实例上启用 Application Signals 的一部分流程
下载最新版本的 AWS Distro for OpenTelemetry Python 自动检测代理。通过运行以下 命令安装它。
pip install aws-opentelemetry-distro
您可以在 AWS Distro for OpenTelemetry Python instrumentation 上查看有关所有已发布版本的信息。
要优化 Application Signals 的优势,请在启动应用程序之前使用环境变量提供更多信息。此信息将显示在 Application Signals 控制面板中。
对于 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_PROTOCOL
变量,指定 http/protobuf
以通过 HTTP 将遥测数据导出到以下步骤中列出的 CloudWatch 代理端点。
对于 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
变量,指定要将跟踪导出到的基本端点 URL。CloudWatch 代理将 4316 作为其 HTTP 上的 OTLP 端口公开。在 Amazon EC2 上,由于应用程序与本地 CloudWatch 代理通信,因此您应将此值设置为 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces
对于 OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT
变量,指定要将指标导出到的基本端点 URL。CloudWatch 代理将 4316 作为其 HTTP 上的 OTLP 端口公开。在 Amazon EC2 上,由于应用程序与本地 CloudWatch 代理通信,因此您应将此值设置为 OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://localhost:4316/v1/metrics
对于 OTEL_METRICS_EXPORTER
变量,我们建议您将该值设置为 none
。这将禁用其他指标导出程序,因此仅使用 Application Signals 导出程序。
将 OTEL_AWS_APPLICATION_SIGNALS_ENABLED
变量设置为 true
以使您的容器开始向 Application Signals 发送 X-Ray 跟踪和 CloudWatch 指标。
使用上一步中讨论的环境变量启动应用程序。以下是启动脚本的示例。
OTEL_METRICS_EXPORTER=none \
OTEL_LOGS_EXPORTER=none \
OTEL_AWS_APPLICATION_SIGNALS_ENABLED=true \
OTEL_PYTHON_DISTRO=aws_distro \
OTEL_PYTHON_CONFIGURATOR=aws_configurator \
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \
OTEL_TRACES_SAMPLER=xray \
OTEL_TRACES_SAMPLER_ARG="endpoint=http://localhost:2000" \
OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://localhost:4316/v1/metrics \
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces \
OTEL_RESOURCE_ATTRIBUTES="service.name=$SVC_NAME
" \
opentelemetry-instrument python $MY_PYTHON_APP.py
在为 Python 应用程序启用 Application Signals 之前,请注意以下注意事项。
-
(可选)要启用跟踪日志关联,请在 OTEL_RESOURCE_ATTRIBUTES
中为应用程序的日志组设置其他环境变量 aws.log.group.names
。这样,应用程序的跟踪和指标便可与这些特定日志组的相关日志条目相关联。对于此变量,将 $YOUR_APPLICATION_LOG_GROUP
替换为应用程序的日志组名称。如果您有多个日志组,则可以使用和号(&
)分隔它们,如以下示例所示:aws.log.group.names=log-group-1&log-group-2
。要启用指标与日志关联的功能,设置此当前环境变量已足够。有关更多信息,请参阅 启用指标与日志关联。要启用跟踪与日志关联,您还需要更改应用程序中的日志记录配置。有关更多信息,请参阅 启用跟踪与日志关联。
以下是帮助启用日志关联的启动脚本示例。
OTEL_METRICS_EXPORTER=none \
OTEL_LOGS_EXPORTER=none \
OTEL_AWS_APPLICATION_SIGNALS_ENABLED=true \
OTEL_PYTHON_DISTRO=aws_distro \
OTEL_PYTHON_CONFIGURATOR=aws_configurator \
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \
OTEL_TRACES_SAMPLER=xray \
OTEL_TRACES_SAMPLER_ARG="endpoint=http://localhost:2000" \
OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://localhost:4316/v1/metrics \
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces \
OTEL_RESOURCE_ATTRIBUTES="aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP
,service.name=$YOUR_SVC_NAME
" \
java -jar $MY_PYTHON_APP.jar
- .NET
-
在 Amazon EC2 实例或本地主机上启用 Application Signals 过程中仪表化 .NET 应用程序
下载最新版本适用于 OpenTelemetry 的 AWS Distro .NET 自动仪表化工具包。可以在 aws-otel-dotnet-instrumenting Release 上下载最新版本。
要启用 Application Signals,请在启动应用程序之前设置以下环境变量以提供更多信息。在启动 .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_RESOURCE_ATTRIBUTES=service.name=aws-otel-integ-test
export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
export OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4316
export OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://127.0.0.1:4316/v1/metrics
export OTEL_METRICS_EXPORTER=none
export OTEL_AWS_APPLICATION_SIGNALS_ENABLED=true
export OTEL_TRACES_SAMPLER=xray
export OTEL_TRACES_SAMPLER_ARG=http://127.0.0.1:2000
以下示例适用于 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_RESOURCE_ATTRIBUTES = "service.name=aws-otel-integ-test"
$env:OTEL_EXPORTER_OTLP_PROTOCOL = "http/protobuf"
$env:OTEL_EXPORTER_OTLP_ENDPOINT = "http://127.0.0.1:4316"
$env:OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT = "http://127.0.0.1:4316/v1/metrics"
$env:OTEL_METRICS_EXPORTER = "none"
$env:OTEL_AWS_APPLICATION_SIGNALS_ENABLED = "true"
$env:OTEL_TRACES_SAMPLER = "xray"
$env:OTEL_TRACES_SAMPLER_ARG = "http://127.0.0.1:2000"
使用上一步中列出的环境变量启动应用程序。
(可选)或者,您可以使用提供的安装脚本来帮助安装和设置 AWS 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.sh
export 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"
您可以在官方 NuGet 存储库中找到 AWS Distro for OpenTelemetry .NET 自动检测包的 NuGet 包。请务必查看自述文件以获取说明。
- Node.js
-
检测 Node.js 应用程序,作为在 Amazon EC2 实例上启用 Application Signals 的一部分流程
下载适用于 Node.js 的最新版本的 AWS Distro for OpenTelemetry JavaScript 自动检测代理。通过运行以下 命令安装它。
npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation
您可以在 AWS Distro for OpenTelemetry JavaScript 检测工具上查看有关所有已发布版本的信息。
要优化 Application Signals 的优势,请在启动应用程序之前使用环境变量提供更多信息。此信息将显示在 Application Signals 控制面板中。
对于 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_PROTOCOL
变量,指定 http/protobuf
以通过 HTTP 将遥测数据导出到以下步骤中列出的 CloudWatch 代理端点。
对于 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
变量,指定要将跟踪导出到的基本端点 URL。CloudWatch 代理将 4316 作为其 HTTP 上的 OTLP 端口公开。在 Amazon EC2 上,由于应用程序与本地 CloudWatch 代理通信,因此您应将此值设置为 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces
对于 OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT
变量,指定要将指标导出到的基本端点 URL。CloudWatch 代理将 4316 作为其 HTTP 上的 OTLP 端口公开。在 Amazon EC2 上,由于应用程序与本地 CloudWatch 代理通信,因此您应将此值设置为 OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://localhost:4316/v1/metrics
对于 OTEL_METRICS_EXPORTER
变量,我们建议您将该值设置为 none
。这将禁用其他指标导出程序,因此仅使用 Application Signals 导出程序。
将 OTEL_AWS_APPLICATION_SIGNALS_ENABLED
变量设置为 true
以使您的容器开始向 Application Signals 发送 X-Ray 跟踪和 CloudWatch 指标。
使用上一步中讨论的环境变量启动应用程序。以下是启动脚本的示例。
OTEL_METRICS_EXPORTER=none \
OTEL_LOGS_EXPORTER=none \
OTEL_AWS_APPLICATION_SIGNALS_ENABLED=true \
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \
OTEL_TRACES_SAMPLER=xray \
OTEL_TRACES_SAMPLER_ARG="endpoint=http://localhost:2000" \
OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://localhost:4316/v1/metrics \
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces \
OTEL_RESOURCE_ATTRIBUTES="service.name=$SVC_NAME
" \
node --require '@aws/aws-distro-opentelemetry-node-autoinstrumentation/register' your-application.js
-
(可选)要启用跟踪日志关联,请在 OTEL_RESOURCE_ATTRIBUTES
中为应用程序的日志组设置其他环境变量 aws.log.group.names
。这样,应用程序的跟踪和指标便可与这些特定日志组的相关日志条目相关联。对于此变量,将 $YOUR_APPLICATION_LOG_GROUP
替换为应用程序的日志组名称。如果您有多个日志组,则可以使用和号(&
)分隔它们,如以下示例所示:aws.log.group.names=log-group-1&log-group-2
。要启用指标与日志关联的功能,设置此当前环境变量已足够。有关更多信息,请参阅 启用指标与日志关联。要启用跟踪与日志关联,您还需要更改应用程序中的日志记录配置。有关更多信息,请参阅 启用跟踪与日志关联。
以下是帮助启用日志关联的启动脚本示例。
export OTEL_METRICS_EXPORTER=none \
export OTEL_LOGS_EXPORTER=none \
export OTEL_AWS_APPLICATION_SIGNALS_ENABLED=true \
export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \
export OTEL_TRACES_SAMPLER=xray \
export OTEL_TRACES_SAMPLER_ARG=endpoint=http://localhost:2000 \
export OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://localhost:4316/v1/metrics \
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces \
export OTEL_RESOURCE_ATTRIBUTES="aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP
,service.name=$SVC_NAME
" \
node --require '@aws/aws-distro-opentelemetry-node-autoinstrumentation/register' your-application.js
设置采用 ESM 模块格式的 Node.js 应用程序
我们对采用 ESM 模块格式的 Node.js 应用程序提供有限的支持。有关详细信息,请参阅使用 ESM 的 Node.js 的已知限制。
为使用 ESM 的 Node.js 应用程序启用 Application Signals,您需要修改之前程序中的步骤。
首先,为您的 Node.js 应用程序安装 @opentelemetry/instrumentation
:
npm install @opentelemetry/instrumentation@0.54.0
然后,在之前程序的步骤 3 和 4 中,将节点选项从:
--require '@aws/aws-distro-opentelemetry-node-autoinstrumentation/register'
更改为以下内容:
--import @aws/aws-distro-opentelemetry-node-autoinstrumentation/register --experimental-loader=@opentelemetry/instrumentation/hook.mjs