使用 AWS Distro for OpenTelemetry (ADOT) SDKs 匯出無收集器追蹤 - Amazon CloudWatch

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 AWS Distro for OpenTelemetry (ADOT) SDKs 匯出無收集器追蹤

您可以使用 ADOT SDKs進行無收集,並將追蹤直接傳送到 OTLP 端點 (用於追蹤)。

注意

根據預設,當您啟用交易搜尋時,會啟用 Application Signals。 AWS Distro for OpenTelemetry 不支援 Application Signals,且必須停用。

先決條件

確定已啟用交易搜尋以傳送跨度至 X-Ray OTLP 端點。如需詳細資訊,請參閱交易搜尋入門

設定 Amazon EC2 的 IAM 許可

請依照下列步驟,將 AWSXrayWriteOnlyPolicy IAM 政策連接至 Amazon EC2 執行個體的 IAM 角色:

  1. 透過 https://console.aws.amazon.com/cloudwatch/ 開啟 CloudWatch 主控台。

  2. 選擇角色,然後尋找並選取 Amazon EC2 執行個體所使用的角色。

  3. 許可索引標籤下,選擇新增許可,然後選擇連接政策

  4. 使用搜尋方塊,搜尋AWSXrayWriteOnlyPolicy政策。

  5. 選取AWSXrayWriteOnlyPolicy政策,然後選擇新增許可

設定內部部署主機的 IAM 許可

請依照下列步驟建立 IAM 使用者,可用來提供許可給現場部署主機。

  1. 透過 https://console.aws.amazon.com/cloudwatch/ 開啟 CloudWatch 主控台。

  2. 選擇使用者,然後選擇建立使用者

  3. 選擇使用者建立使用者

  4. 使用者詳細資訊使用者名稱下,輸入新 IAM 使用者的名稱。這是 的登入名稱 AWS ,將用於驗證您的主機。

  5. 選擇下一步

  6. 設定許可頁面的許可選項下,選取直接連接政策

  7. 許可政策清單中,選取要新增至使用者AWSXrayWriteOnlyPolicy的政策。

  8. 選擇下一步

  9. 檢閱和建立頁面上,確定您對使用者名稱感到滿意,且AWSXrayWriteOnlyPolicy政策位於許可摘要下。

  10. 選擇 Create user (建立使用者)。

  11. 建立和擷取您的 AWS 存取金鑰和私密金鑰:

    1. 在 IAM 主控台的導覽窗格中,選擇使用者,然後選取您在上一個步驟中建立的使用者名稱。

    2. 在使用者頁面上,選擇安全登入資料索引標籤。

    3. 存取金鑰區段下,選擇建立存取金鑰

    4. 針對建立存取金鑰步驟 1,請選擇命令列界面 (CLI)

    5. 對於建立存取金鑰步驟 2,選擇性地輸入標籤,然後選擇下一步

    6. 針對建立存取金鑰步驟 3,選取下載 .csv 檔案,以使用 IAM 使用者的存取金鑰和私密存取金鑰儲存 .csv 檔案。後續步驟需要此資訊。

    7. 選擇完成

  12. 輸入下列命令,在現場部署主機中設定您的 AWS 登入資料。SECRET_ACCESS_IDACCESS_KEY_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 SDKs

您可以啟用追蹤,讓您的應用程式直接從 Java、Node.js、Python 和 .Net 上的 AWS Distro for OpenTelemetry (ADOT) SDK 直接傳送至 OTLP 端點。

Java
  1. 下載最新版本的 AWS 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 版本

  2. 若要啟用直接將追蹤傳送至 X-Ray OTLP 追蹤端點的匯出工具,並最佳化優點,請在啟動應用程式之前使用環境變數來提供其他資訊。

  3. 對於 OTEL_RESOURCE_ATTRIBUTES 變數,請將下列資訊指定為索引鍵/值對:

    (選用) service.name設定服務的名稱。這會在 Application Signals 儀表板中顯示為您的應用程式的服務名稱。當您未提供此金鑰的值時,UnknownService會使用 的預設值。

    (選用) deployment.environment設定應用程式執行所在的環境。這將顯示為您應用程式的託管環境。當您未指定此值時,會使用下列其中一個預設值:

    • 如果這是屬於 Auto Scaling 群組的執行個體,則會將其設定為 ec2:name-of-Auto-Scaling-group

    • 如果這是不屬於 Auto Scaling 群組的 Amazon EC2 執行個體,則會將其設定為 ec2:default

    • 如果這是內部部署主機,則會將其設定為 generic:default

    此環境變數僅供 Application Signals 使用,並轉換為 X-Ray 追蹤註釋和 CloudWatch 指標維度

  4. 針對 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"
  5. 針對 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"
  6. 對於 OTEL_METRICS_EXPORTER變數,建議將值設定為無。

  7. 對於 OTEL_LOGS_EXPORTER變數,建議將值設定為無。

  8. 對於 OTEL_TRACES_EXPORTER變數,您必須設定 的值 otlp(這是選用的,如果未設定此環境變數,則為預設值)。

  9. 對於 OTEL_EXPORTER_OTLP_PROTOCOL變數,您必須將 值設定為 http/protobuf (這是選用的,如果未設定此環境變數,則為預設值)。X-Ray OTLP 端點目前僅支援 HTTP 通訊協定。

  10. 您的應用程式現在應該使用 AWS Distro for OpenTelemetry Java 檢測執行,並會產生跨度。這些範圍會儲存在您帳戶中的 aws/spans CloudWatch LogsLogGroup 中。您也可以在 CloudWatch Traces and Metrics 主控台中檢視與您的範圍相關的追蹤和指標。

  11. 使用您設定的環境變數啟動應用程式。以下是啟動指令碼的範例。

    (注意:下列組態僅支援適用於 Java 的 AWS 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
  1. 下載適用於 Node.js 的 AWS Distro for OpenTelemetry JavaScript 自動檢測代理程式的最新版本。您可以使用 命令來安裝 :

    npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation

    若要檢視所有發行版本的相關資訊,請參閱 AWS Distro for OpenTelemetry JavaScript 檢測

  2. 若要啟用直接將追蹤傳送至 X-Ray OTLP 端點的匯出工具,並最佳化優點,請在啟動應用程式之前使用環境變數來提供其他資訊。

  3. 對於 OTEL_RESOURCE_ATTRIBUTES 變數,請將下列資訊指定為索引鍵/值對:

    (選用) service.name設定服務的名稱。這會在 Application Signals 儀表板中顯示為您的應用程式的服務名稱。當您未提供此金鑰的值時,UnknownService會使用 的預設值。

    (選用) deployment.environment設定應用程式執行所在的環境。這將顯示為 Application Signals 儀表板中應用程式的 Hosted In 環境。當您未指定此變數時,會使用下列其中一個預設值:

    • 如果這是屬於 Auto Scaling 群組的執行個體,則會將其設定為 ec2:name-of-Auto-Scaling-group

    • 如果這是不屬於 Auto Scaling 群組的 Amazon EC2 執行個體,則會將其設定為 ec2:default

    • 如果這是內部部署主機,則會將其設定為 generic:default

    此環境變數僅供 Application Signals 使用,並轉換為 X-Ray 追蹤註釋和 CloudWatch 指標維度。

  4. 針對 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"
  5. 對於 OTEL_METRICS_EXPORTER變數,建議將值設定為無。Application Signals 指標是由 OTLP 端點產生。

  6. 對於 OTEL_LOGS_EXPORTER變數,建議將值設定為無。

  7. 對於 OTEL_TRACES_EXPORTER變數,您必須設定 的值 otlp(這是選用的,如果未設定此環境變數,則為預設值)。

  8. 對於 OTEL_EXPORTER_OTLP_PROTOCOL變數,您必須將 值設定為 http/protobuf (這是選用的,如果未設定此環境變數,則為預設值)。X-Ray OTLP 端點目前僅支援 HTTP 通訊協定。

  9. 您的應用程式現在應該使用 AWS Distro for OpenTelemetry Java 檢測執行,並會產生跨度。這些範圍會儲存在您帳戶中的 aws/spans CloudWatch LogsLogGroup 中。您也可以在 CloudWatch Traces and Metrics 主控台中檢視與您的範圍相關的追蹤和指標。

  10. 使用您設定的環境變數啟動應用程式。以下是啟動指令碼的範例。

    (注意:將 $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
  1. 下載最新版本的 AWS Distro for OpenTelemetry Python 自動檢測代理程式。您可以使用 命令來安裝 :

    pip install aws-opentelemetry-distro
  2. 若要讓匯出程式直接傳送追蹤到 X-Ray OTLP 端點並最佳化優點,請在啟動應用程式之前使用環境變數來提供其他資訊。

  3. 對於 OTEL_RESOURCE_ATTRIBUTES 變數,請將下列資訊指定為索引鍵/值對:

    (選用) service.name設定服務的名稱。這會在 Application Signals 儀表板中顯示為您的應用程式的服務名稱。當您未提供此金鑰的值時,UnknownService會使用 的預設值。

    (選用) deployment.environment設定應用程式執行所在的環境。這將顯示為 Application Signals 儀表板中應用程式的 Hosted In 環境。當您未指定此值時,會使用下列其中一個預設值:

    • 如果這是屬於 Auto Scaling 群組的執行個體,則會將其設定為 ec2:name-of-Auto-Scaling-group

    • 如果這是不屬於 Auto Scaling 群組的 Amazon EC2 執行個體,則會將其設定為 ec2:default

    • 如果這是內部部署主機,則會將其設定為 generic:default

    此環境變數僅供 Application Signals 使用,並轉換為 X-Ray 追蹤註釋和 CloudWatch 指標維度。

  4. 針對 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"
  5. 對於 OTEL_METRICS_EXPORTER變數,建議將值設定為無。Application Signals 指標是由 OTLP 端點產生。

  6. 對於 OTEL_LOGS_EXPORTER變數,建議將值設定為無。

  7. 對於 OTEL_TRACES_EXPORTER變數,您必須設定 的值 otlp(這是選用的,如果未設定此環境變數,則為預設值)。

  8. 對於 OTEL_EXPORTER_OTLP_PROTOCOL變數,您必須將 值設定為 http/protobuf (這是選用的,如果未設定此環境變數,則為預設值)。X-Ray OTLP 端點目前僅支援 HTTP 通訊協定。

  9. 您的應用程式現在應該使用 AWS Distro for OpenTelemetry Java 檢測執行,並會產生跨度。這些範圍會儲存在您帳戶中的 aws/spans CloudWatch LogsLogGroup 中。您也可以在 CloudWatch Traces and Metrics 主控台中檢視與您的範圍相關的追蹤和指標。

  10. 使用您設定的環境變數啟動應用程式。以下是啟動指令碼的範例。

    (注意:將 $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 檢測的必要變數。

  1. OTEL_RESOURCE_ATTRIBUTES環境變數dotnet-service-name中,將 取代為您選擇的服務名稱。

  2. 設定 OTEL_TRACES_EXPORTER=none

  3. 設定 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
  4. 使用環境變數啟動應用程式。

  5. (選用) 或者,您可以使用提供的安裝指令碼來協助安裝和設定 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.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 儲存庫中找到 AWS Distro for OpenTelemetry .NET 自動檢測套件的 NuGet 套件。請務必檢查 README 檔案以取得指示。