在 Amazon EC2 上啟用您的應用程式
依本節所述的自訂設定步驟,在 Amazon EC2 上啟用 CloudWatch Application Signals。
對於在 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 之前參閱 支援的系統。
步驟 1:在您的帳戶中啟用 Application Signals
必須先在帳戶中啟用 Application Signals。如果尚未這麼做,請參閱 在您的帳戶中啟用 Application Signals。
步驟 2:下載並啟動 CloudWatch 代理程式
安裝 CloudWatch 代理程式,以在 Amazon EC2 執行個體或內部部署主機上啟用 Application Signals
將最新版的 CloudWatch 代理程式下載至執行個體。如果執行個體已安裝 CloudWatch 代理程式,則您可能需要更新它。只有 2023 年 11 月 30 日或更晚時間發行的代理程式版本支援 CloudWatch Application Signals。
在啟動 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 管理主控台,並開啟位於 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
-
檢測您的 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 儀表板中應用程式的 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_EXPORTER=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 替換為應用程式的日誌群組名稱。如有多個日誌群組,可以使用 & 進行分隔,如本範例所示: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 檢測中檢視所有發行版本的相關資訊。
若要最佳化 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 替換為應用程式的日誌群組名稱。如有多個日誌群組,可以使用 & 進行分隔,如本範例所示: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
-
檢測您的 .NET 應用程式,以在 Amazon EC2 執行個體或內部部署主機上啟用 Application Signals
下載最新版本的 AWS Distro for OpenTelemetry .NET 自動檢測套件。可於 aws-otel-dotnet-instrumentation Releases 下載最新版本。
若要啟用 Application Signals,請在啟動應用程式之前,使用以下環境變數提供其他資訊。在您啟動 .NET 應用程式之前,需要這些變數才能設定 .NET 檢測的啟動勾點。將 OTEL_RESOURCE_ATTRIBUTES 環境變數中的 dotnet-service-name 替換為您選擇的服務名稱。
以下是 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=dotnet-service-name
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=dotnet-service-name"
$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"
Register-OpenTelemetryForIIS
可以在官方 NuGet 儲存庫中找到 AWS Distro for OpenTelemetry .NET 自動檢測套件的 NuGet 套件。請務必檢查 README 檔案以取得相關說明。
- 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 儀表板中應用程式的 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 替換為應用程式的日誌群組名稱。如有多個日誌群組,可以使用 & 進行分隔,如本範例所示: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 的已知限制。
若要為採用 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
(選用) 步驟 4:監控您的應用程式運作狀態
在 Amazon EC2 上啟用應用程式後,即可監控應用程式的運作狀態。如需更多詳細資訊,請參閱 使用 Application Signals 監控應用程式的運作狀態。