本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Amazon EC2 上啟用應用程式訊號
對於在 Amazon EC2 或其他執行個體類型上執行的應用程式,您可以自行安裝和設定 CloudWatch 代理程式和 AWS Distro for OpenTelemetry。在使用自訂 Application Signals 設定啟用的這些架構上,Application Signals 不會自動探索您的服務或其執行所在的叢集或主機的名稱。您必須在自訂設定期間指定這些名稱,而您指定的名稱是顯示在 Application Signals 儀表板中的名稱。
本節中的指示適用於 Java、Python 和 .NET 應用程式。這些步驟已在 Amazon EC2 執行個體上進行測試,但也預期可在支援 AWS Distro for OpenTelemetry 的其他架構上運作。
需求
如果您已經在搭配使用 OpenTelemetry 與您想要為 Application Signals 啟用的應用程式,請在啟用 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。下列範例是可針對 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": {}
}
}
}
將 CloudWatchAgentServerPolicy IAM 政策連接至 Amazon EC2 執行個體的 IAM 角色。如需現場部署主機的許可,請參閱內部部署伺服器的許可。
登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。
選擇角色並查找 Amazon EC2 執行個體使用的角色。然後選擇該角色的名稱。
在許可索引標籤中,依序選擇新增許可、附接政策。
Find 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 ,將用於驗證您的主機。然後選擇 Next (下一步)
在設定許可頁面的許可選項下,選取直接連接政策。
從許可政策清單中,選取要新增至使用者的 CloudWatchAgentServerPolicy 政策。然後選擇下一步。
在檢閱和建立頁面上,請確定您對使用者名稱感到滿意,且 CloudWatchAgentServerPolicy 政策位於許可摘要中。
選擇建立使用者
建立和擷取您的 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
-
在 Amazon EC2 執行個體或內部部署主機上啟用 Application Signals 時,檢測您的 Java 應用程式
下載最新版本的 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 儀表板中應用程式的 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 指標。
使用上一個步驟中列出的環境變數啟動應用程式。以下是啟動指令碼的範例。
下列組態僅支援適用於 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
(選用) 若要啟用日誌關聯,請在 aws.log.group.names
中OTEL_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
-
在 Amazon EC2 執行個體上啟用 Application Signals 時,檢測您的 Python 應用程式
下載最新版本的 AWS Distro for OpenTelemetry Python 自動檢測代理程式。請執行下列 命令進行安裝。
pip install aws-opentelemetry-distro
您可以在 AWS Distro for OpenTelemetry Python 檢測器檢視所有發行版本的相關資訊。
若要最佳化 Application Signals 優勢,請在啟動應用程式之前,使用環境變數提供其他資訊。此資訊將顯示在 Application Signals 儀表板中。
對於 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_PROTOCOL
變數,指定 http/protobuf
以透過 HTTP 匯出遙測資料至下列步驟中列出的 CloudWatch 代理程式端點。
對於 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
變數,請指定要接收追蹤匯出的基礎端點 URL。CloudWatch 代理程式會透過 HTTP 公開 4316 做為其 OTLP 連接埠。在 Amazon EC2 上,由於應用程式會與本機 CloudWatch 代理程式通訊,因此應將此值設為 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces
。
對於 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
。
對於 OTEL_METRICS_EXPORTER
變數,建議將值設定為 none
。這會停用其他指標匯出工具,以便只使用 Application Signals 匯出器。
將OTEL_AWS_APPLICATION_SIGNALS_ENABLED
變數設定為 true
,讓您的容器開始將 X-Ray 追蹤和 CloudWatch 指標傳送至 Application Signals。
使用上一個步驟中討論的環境變數來啟動應用程式。以下是啟動指令碼的範例。
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 之前,請注意下列考量事項。
-
(選用) 若要啟用日誌關聯,請在 aws.log.group.names
中OTEL_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 應用程式
下載最新版本的 AWS Distro for OpenTelemetry .NET 自動儀器套件。您可以在 aws-otel-dotnet-instrumentation Releases 下載最新版本。
若要啟用 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 套件。 NuGet 請務必檢查 README 檔案以取得指示。
- Node.js
-
在 Amazon EC2 執行個體上啟用 Application Signals 時檢測 Node.js 應用程式
下載適用於 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 儀表板中應用程式的 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_PROTOCOL
變數,指定 http/protobuf
將遙測資料透過 HTTP 匯出到下列步驟中列出的 CloudWatch 代理程式端點。
對於 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
變數,請指定要接收追蹤匯出的基礎端點 URL。CloudWatch 代理程式會透過 HTTP 公開 4316 做為其 OTLP 連接埠。在 Amazon EC2 上,由於應用程式會與本機 CloudWatch 代理程式通訊,因此應將此值設為 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces
。
對於 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
。
對於 OTEL_METRICS_EXPORTER
變數,建議將值設定為 none
。這會停用其他指標匯出工具,以便只使用 Application Signals 匯出器。
將OTEL_AWS_APPLICATION_SIGNALS_ENABLED
變數設定為 true
,讓您的容器開始將 X-Ray 追蹤和 CloudWatch 指標傳送至 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
-
(選用) 若要啟用日誌關聯,請在 aws.log.group.names
中OTEL_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