在 Amazon EC2 上啟用應用程式訊號 - Amazon CloudWatch

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

在 Amazon EC2 上啟用應用程式訊號

對於在 Amazon EC2 或其他執行個體類型上執行的應用程式,您可以自行安裝和設定 CloudWatch 代理程式和 AWS Distro for OpenTelemetry。在使用自訂 Application Signals 設定啟用的這些架構上,Application Signals 不會自動探索您的服務或其執行所在的叢集或主機的名稱。您必須在自訂設定期間指定這些名稱,而您指定的名稱是顯示在 Application Signals 儀表板中的名稱。

本節中的指示適用於 Java、Python 和 .NET 應用程式。這些步驟已在 Amazon EC2 執行個體上進行測試,但也預期可在支援 AWS Distro for OpenTelemetry 的其他架構上運作。

需求

  • 若要取得 Application Signals 的支援,您必須同時使用最新版本的 CloudWatch 代理程式和 AWS Distro for OpenTelemetry 代理程式。

  • 您必須在執行個體 AWS CLI 上安裝 。我們建議 AWS CLI 使用第 2 版,但第 1 版也應該有效。如需安裝 的詳細資訊 AWS CLI,請參閱安裝或更新最新版本的 AWS CLI

重要

如果您已經在搭配使用 OpenTelemetry 與您想要為 Application Signals 啟用的應用程式,請在啟用 Application Signals 之前參閱 OpenTelemetry 相容性

步驟 1:在您的帳戶中啟用 Application Signals

如果尚未在此帳戶中啟用 Application Signals,則必須授予 Application Signals 所需的許可,以探索您的服務。為此,請執行下列操作。您的帳戶只需執行一次此操作。

為您的應用程式啟用 Application Signals
  1. 透過 https://console.aws.amazon.com/cloudwatch/ 開啟 CloudWatch 主控台。

  2. 在導覽窗格中,選擇服務

  3. 選擇開始探索您的服務

  4. 選取核取方塊,然後選擇開始探索您的服務

    當您第一次在帳戶中完成此步驟時,Application Signals 會建立 AWSServiceRoleForCloudWatchApplicationSignals 服務連結角色。此角色會授予 Application Signals 下列許可:

    • xray:GetServiceGraph

    • logs:StartQuery

    • logs:GetQueryResults

    • cloudwatch:GetMetricData

    • cloudwatch:ListMetrics

    • tag:GetResources

    如需有關此角色的詳細資訊,請參閱 CloudWatch Application Signals 的服務連結角色許可

步驟 2:下載並啟動 CloudWatch 代理程式

在 Amazon EC2 執行個體或內部部署主機上啟用 Application Signals 時,安裝 CloudWatch 代理程式
  1. 將最新版的 CloudWatch 代理程式下載至執行個體。如果執行個體已安裝 CloudWatch 代理程式,則您可能需要更新它。只有 2023 年 11 月 30 日或更晚時間發行的代理程式版本支援 CloudWatch Application Signals。

    如需有關下載 CloudWatch 代理程式的資訊,請參閱 下載 CloudWatch 代理程式套件

  2. 在啟動 CloudWatch 代理程式之前,請將其設定為啟用 Application Signals。下列範例是可針對 EC2 主機上的指標和追蹤來啟用 Application Signals 的 CloudWatch 代理程式組態。

    建議您將此檔案放置在 Linux /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json 系統的 。

    { "traces": { "traces_collected": { "application_signals": {} } }, "logs": { "metrics_collected": { "application_signals": {} } } }
  3. CloudWatchAgentServerPolicy IAM 政策連接至 Amazon EC2 執行個體的 IAM 角色。如需現場部署主機的許可,請參閱內部部署伺服器的許可

    1. 登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

    2. 選擇角色並查找 Amazon EC2 執行個體使用的角色。然後選擇該角色的名稱。

    3. 許可索引標籤中,依序選擇新增許可附接政策

    4. Find CloudWatchAgentServerPolicy. 如有需要,請使用搜尋方塊。然後,選取該政策的核取方塊,並選擇新增許可

  4. 輸入下列命令,啟動 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 授權。

設定現場部署主機的許可
  1. 建立 IAM 使用者,以用於提供許可給您的內部部署主機:

    1. 開啟位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台。

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

    3. 使用者詳細資訊使用者名稱中,輸入新 IAM 使用者的名稱。這是 的登入名稱 AWS ,將用於驗證您的主機。然後選擇 Next (下一步)

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

    5. 許可政策清單中,選取要新增至使用者的 CloudWatchAgentServerPolicy 政策。然後選擇下一步

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

    7. 選擇建立使用者

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

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

    2. 在使用者頁面上,選擇安全登入資料索引標籤。然後,在存取金鑰區段中,選擇建立存取金鑰

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

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

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

    6. 選擇完成

  3. 輸入下列命令,在現場部署主機中設定您的 AWS 登入資料。將 ACCESS_KEY_IDSECRET_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
在 Amazon EC2 執行個體或內部部署主機上啟用 Application Signals 時,檢測您的 Java 應用程式
  1. 下載最新版本的 AWS Distro for OpenTelemetry Java 自動檢測代理程式。可以使用此連結來下載最新版本。可以透過 aws-otel-java-instrumentation 發行版本檢視所有已發行的版本資訊。

  2. 若要最佳化 Application Signals 優勢,請在啟動應用程式之前,使用環境變數提供其他資訊。此資訊將顯示在 Application Signals 儀表板中。

    1. 對於 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 指標維度。

      • 對於 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 指標。

  3. 使用上一個步驟中列出的環境變數啟動應用程式。以下是啟動指令碼的範例。

    注意

    下列組態僅支援適用於 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
  4. (選用) 若要啟用日誌關聯,請在 aws.log.group.namesOTEL_RESOURCE_ATTRIBUTES為應用程式的日誌群組設定額外的環境變數。如此一來,您應用程式的追蹤和指標就可以與這些日誌群組的相關日誌項目建立關聯。對於此變數,請將 $YOUR_APPLICATION_LOG_GROUP 取代為應用程式的日誌群組名稱。如果您有多個日誌群組,您可以使用 ampersand (&) 來分隔它們,如本範例所示: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 應用程式的 WSGI 伺服器,除了本節中的下列步驟之外,沒有使用 WSGI 伺服器之 Python 應用程式的 Application Signals 資料如需讓 Application Signals 運作的相關資訊,請參閱 。

在 Amazon EC2 執行個體上啟用 Application Signals 時,檢測您的 Python 應用程式
  1. 下載最新版本的 AWS Distro for OpenTelemetry Python 自動檢測代理程式。請執行下列 命令進行安裝。

    pip install aws-opentelemetry-distro

    您可以在 AWS Distro for OpenTelemetry Python 檢測器檢視所有發行版本的相關資訊。

  2. 若要最佳化 Application Signals 優勢,請在啟動應用程式之前,使用環境變數提供其他資訊。此資訊將顯示在 Application Signals 儀表板中。

    1. 對於 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 指標維度。

    2. 針對 OTEL_EXPORTER_OTLP_PROTOCOL變數,指定 http/protobuf 以透過 HTTP 匯出遙測資料至下列步驟中列出的 CloudWatch 代理程式端點。

    3. 對於 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT 變數,請指定要接收追蹤匯出的基礎端點 URL。CloudWatch 代理程式會透過 HTTP 公開 4316 做為其 OTLP 連接埠。在 Amazon EC2 上,由於應用程式會與本機 CloudWatch 代理程式通訊,因此應將此值設為 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces

    4. 對於 OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT 變數,請指定要接收指標匯出的基礎端點 URL。CloudWatch 代理程式會透過 HTTP 公開 4316 做為其 OTLP 連接埠。在 Amazon EC2 上,由於應用程式會與本機 CloudWatch 代理程式通訊,因此應將此值設為 OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://localhost:4316/v1/metrics

    5. 對於 OTEL_METRICS_EXPORTER 變數,建議將值設定為 none。這會停用其他指標匯出工具,以便只使用 Application Signals 匯出器。

    6. OTEL_AWS_APPLICATION_SIGNALS_ENABLED變數設定為 true,讓您的容器開始將 X-Ray 追蹤和 CloudWatch 指標傳送至 Application Signals。

  3. 使用上一個步驟中討論的環境變數來啟動應用程式。以下是啟動指令碼的範例。

    • $SVC_NAME 取代為應用程式名稱。這會在 Application Signals 儀表板中顯示為應用程式的名稱。

    • $PYTHON_APP 將 取代為您應用程式的位置和名稱。

    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 之前,請注意下列考量事項。

    • 在某些容器化應用程式中,缺少PYTHONPATH的環境變數有時可能會導致應用程式無法啟動。若要解決此問題,請確定您將PYTHONPATH環境變數設定為應用程式工作目錄的位置。這是因為 OpenTelemetry 自動檢測的已知問題。如需此問題的詳細資訊,請參閱 PYTHONPATH 的 Python 自動檢測設定不合規

    • 對於 Django 應用程式,還有額外的必要組態,如 OpenTelemetry Python 文件所述。

      • 使用 --noreload旗標以防止自動重新載入。

      • DJANGO_SETTINGS_MODULE環境變數設定為 Django 應用程式settings.py檔案的位置。這可確保 OpenTelemetry 可以正確存取 Django 設定並將其與您的 Django 設定整合。

  4. (選用) 若要啟用日誌關聯,請在 aws.log.group.namesOTEL_RESOURCE_ATTRIBUTES為應用程式的日誌群組設定額外的環境變數。如此一來,您應用程式的追蹤和指標就可以與這些日誌群組的相關日誌項目建立關聯。對於此變數,請將 $YOUR_APPLICATION_LOG_GROUP 取代為應用程式的日誌群組名稱。如果您有多個日誌群組,您可以使用 ampersand (&) 來分隔它們,如本範例所示: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 應用程式
  1. 下載最新版本的 AWS Distro for OpenTelemetry .NET 自動儀器套件。您可以在 aws-otel-dotnet-instrumentation Releases 下載最新版本。

  2. 若要啟用 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"
  3. 使用上一個步驟中列出的環境變數啟動應用程式。

    (選用) 或者,您可以使用提供的安裝指令碼來協助安裝和設定 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 套件。 NuGet 請務必檢查 README 檔案以取得指示。

Node.js
注意

如果您使用 ESM 為 Node.js 應用程式啟用 Application Signals,請先參閱 Setting up a Node.js application with the ESM module format,再開始這些步驟。

在 Amazon EC2 執行個體上啟用 Application Signals 時檢測 Node.js 應用程式
  1. 下載適用於 Node.js 的 AWS Distro for OpenTelemetry JavaScript 自動檢測代理程式的最新版本。請執行下列 命令進行安裝。

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

    您可以在 AWS Distro for OpenTelemetry JavaScript 檢測工具中檢視所有發行版本的相關資訊。

  2. 若要最佳化 Application Signals 優勢,請在啟動應用程式之前,使用環境變數提供其他資訊。此資訊將顯示在 Application Signals 儀表板中。

    1. 對於 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 指標維度。

    2. 針對 OTEL_EXPORTER_OTLP_PROTOCOL變數,指定 http/protobuf 將遙測資料透過 HTTP 匯出到下列步驟中列出的 CloudWatch 代理程式端點。

    3. 對於 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT 變數,請指定要接收追蹤匯出的基礎端點 URL。CloudWatch 代理程式會透過 HTTP 公開 4316 做為其 OTLP 連接埠。在 Amazon EC2 上,由於應用程式會與本機 CloudWatch 代理程式通訊,因此應將此值設為 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces

    4. 對於 OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT 變數,請指定要接收指標匯出的基礎端點 URL。CloudWatch 代理程式會透過 HTTP 公開 4316 做為其 OTLP 連接埠。在 Amazon EC2 上,由於應用程式會與本機 CloudWatch 代理程式通訊,因此應將此值設為 OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://localhost:4316/v1/metrics

    5. 對於 OTEL_METRICS_EXPORTER 變數,建議將值設定為 none。這會停用其他指標匯出工具,以便只使用 Application Signals 匯出器。

    6. OTEL_AWS_APPLICATION_SIGNALS_ENABLED變數設定為 true,讓您的容器開始將 X-Ray 追蹤和 CloudWatch 指標傳送至 Application Signals。

  3. 使用上一個步驟中討論的環境變數來啟動應用程式。以下是啟動指令碼的範例。

    • $SVC_NAME 取代為應用程式名稱。這會在 Application Signals 儀表板中顯示為應用程式的名稱。

    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
  4. (選用) 若要啟用日誌關聯,請在 aws.log.group.namesOTEL_RESOURCE_ATTRIBUTES為應用程式的日誌群組設定額外的環境變數。如此一來,您應用程式的追蹤和指標就可以與這些日誌群組的相關日誌項目建立關聯。對於此變數,請將 $YOUR_APPLICATION_LOG_GROUP 取代為應用程式的日誌群組名稱。如果您有多個日誌群組,您可以使用 ampersand (&) 來分隔它們,如本範例所示: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,您需要修改先前程序中的步驟。

首先,@opentelemetry/instrumentation為您的 Node.js 應用程式安裝 :

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