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

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

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

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

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

需求

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

  • 您必須在執行個體 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. 在 開啟 CloudWatch 主控台https://console.aws.amazon.com/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執行個體或內部部署主機上安裝 CloudWatch 代理程式作為啟用 Application Signals 的一部分
  1. 將最新版的 CloudWatch 代理程式下載至執行個體。如果執行個體已安裝 CloudWatch 代理程式,您可能需要更新它。只有 2023 年 11 月 30 日或更新版本發行的代理程式版本支援 CloudWatch Application Signals。

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

  2. 啟動 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": {} } } }
  3. CloudWatchAgentServerPolicyIAM政策連接至 Amazon EC2執行個體IAM的角色。如需內部部署主機的許可,請參閱 內部部署伺服器的許可

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

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

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

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

  4. 輸入下列命令以啟動 CloudWatch 代理程式。Replace (取代) 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. 在 開啟IAM主控台https://console.aws.amazon.com/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 憑證。Replace (取代) 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:檢測您的應用程式並啟動它

下一步是測試 Application Signals CloudWatch 的應用程式。

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 Auto-Intrumentation 代理程式的 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 代理程式透過 公開 4316 作為其OTLP連接埠HTTP。在 Amazon 上EC2,由於應用程式與本機 CloudWatch 代理程式通訊,因此您應該將此值設定為 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces

    4. 針對OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT變數,指定要匯出URL指標的基本端點。 CloudWatch 代理程式透過 公開 4316 作為其OTLP連接埠HTTP。在 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 自動儀器的已知問題所致。如需此問題的詳細資訊,請參閱 Python 自動儀器設定 PYTHONPATH 不符合

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

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

      • DJANGO_SETTINGS_MODULE環境變數設定為 Django 應用程式settings.py檔案的位置。這可確保 OpenTelemetry 可以正確存取 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 auto-intrumentation 套件。您可以在 aws-otel-dotnet-instrumentation版本 下載最新版本。

  2. 若要啟用 Application Signals,請設定下列環境變數,以便在啟動應用程式之前提供其他資訊。在您啟動 .NET 應用程式之前,這些變數是設定 . instrumentation 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 auto-intrumentation 套件。

    對於 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 儲存庫 中找到 NuGet AWS Distro for OpenTelemetry .NET auto-intrumentation 套件的套件。請務必檢查 README 檔案以取得指示。

Node.js
注意

如果您使用 為 Node.js 應用程式啟用 Application SignalsESM,請在開始這些步驟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 Auto-intrumentation 代理程式的最新版本。請執行下列 命令進行安裝。

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

    您可以在 AWS Distro for OpenTelemetry JavaScript 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 指標維度。

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

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

    4. 針對OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT變數,指定要匯出URL指標的基本端點。 CloudWatch 客服人員透過 公開 4316 作為其OTLP連接埠HTTP。在 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 應用程式有限支援。如需詳細資訊,請參閱 使用 的 Node.js 的已知限制 ESM

若要使用 為 Node.js 應用程式啟用 Application SignalsESM,您需要修改先前程序中的步驟。

首先,@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