Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwenden Sie die Daemon-Strategie für die Bereitstellung
Schritt 1: Application Signals in Ihrem Konto aktivieren
Wenn Sie Application Signals in diesem Konto noch nicht aktiviert haben, müssen Sie Application Signals die Berechtigungen gewähren, die es benötigt, um Ihre Services zu erkennen. Gehen Sie dazu wie folgt vor. Dies muss nur einmal für Ihr Konto durchgeführt werden.
So aktivieren Sie Application Signals für Ihre Anwendungen
Öffnen Sie die CloudWatch Konsole unter. https://console.aws.amazon.com/cloudwatch/
Wählen Sie im Navigationsbereich Services.
Wählen Sie Mit der Entdeckung Ihrer Services beginnen.
Aktivieren Sie das Kontrollkästchen und wählen Sie Mit der Entdeckung von Services beginnen.
Wenn Sie diesen Schritt zum ersten Mal in Ihrem Konto ausführen, wird die AWSServiceRoleForCloudWatchApplicationSignalsdienstbezogene Rolle erstellt. Diese Rolle gewährt Application Signals die folgenden Berechtigungen:
-
xray:GetServiceGraph
-
logs:StartQuery
-
logs:GetQueryResults
-
cloudwatch:GetMetricData
-
cloudwatch:ListMetrics
-
tag:GetResources
Weitere Informationen über diese Rolle finden Sie unter Dienstbezogene Rollenberechtigungen für Anwendungssignale CloudWatch .
-
Schritt 2: Erstellen von IAM-Rollen
Sie müssen eine IAM Rolle erstellen. Wenn Sie diese Rolle bereits erstellt haben, müssen Sie ihr möglicherweise Berechtigungen hinzufügen.
-
ECSAufgabenrolle — Container verwenden diese Rolle zur Ausführung. Die Berechtigungen sollten genau den Anforderungen entsprechen, die Ihre Anwendungen benötigen CloudWatchAgentServerPolicy.
Weitere Informationen zum Erstellen von IAM Rollen finden Sie unter IAMRollen erstellen.
Schritt 3: Bereiten Sie die CloudWatch Agentenkonfiguration vor
Bereiten Sie zunächst die Agentenkonfiguration mit Application Signals aktiviert vor. Erstellen Sie dazu eine lokale Datei mit dem Namen /tmp/ecs-cwagent.json
.
{ "traces": { "traces_collected": { "application_signals": {} } }, "logs": { "metrics_collected": { "application_signals": {} } } }
Laden Sie diese Konfiguration anschließend in den SSM Parameter Store hoch. Geben Sie dazu den folgenden Befehl ein. Ersetzen Sie in der Datei $REGION
mit Ihrem tatsächlichen Regionsnamen.
aws ssm put-parameter \ --name "ecs-cwagent" \ --type "String" \ --value "`cat /tmp/ecs-cwagent.json`" \ --region "
$REGION
"
Schritt 4: Stellen Sie den CloudWatch Agent-Daemon-Dienst bereit
Erstellen Sie die folgende Aufgabendefinition und stellen Sie sie in Ihrem Anwendungscluster bereit. Ersetzen $REGION
mit Ihrem tatsächlichen Regionsnamen. Ersetzen $TASK_ROLE_ARN
and $EXECUTION_ROLE_ARN
mit den IAM Rollen, auf die Sie sich vorbereitet habenSchritt 2: Erstellen von IAM-Rollen. Ersetzen $IMAGE
mit dem Pfad zum neuesten CloudWatch Container-Image in Amazon Elastic Container Registry. Weitere Informationen finden Sie unter cloudwatch-agent
Anmerkung
Der Daemon-Dienst stellt zwei Ports auf dem Host zur Verfügung, wobei 4316 als Endpunkt für den Empfang von Metriken und Traces und 2000 als Trace-Sampler-Endpunkt verwendet werden. CloudWatch Dieses Setup ermöglicht es dem Agenten, Telemetriedaten von allen auf dem Host ausgeführten Anwendungsaufgaben zu sammeln und zu übertragen. Stellen Sie sicher, dass diese Ports nicht von anderen Diensten auf dem Host verwendet werden, um Konflikte zu vermeiden.
{ "family": "ecs-cwagent-daemon", "taskRoleArn": "
$TASK_ROLE_ARN
", "executionRoleArn": "$EXECUTION_ROLE_ARN
", "networkMode": "bridge", "containerDefinitions": [ { "name": "ecs-cwagent", "image": "$IMAGE", "essential": true, "portMappings": [ { "containerPort": 4316, "hostPort": 4316 }, { "containerPort": 2000, "hostPort": 2000 } ], "secrets": [ { "name": "CW_CONFIG_CONTENT", "valueFrom": "ecs-cwagent" } ], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "true", "awslogs-group": "/ecs/ecs-cwagent", "awslogs-region": "$REGION
", "awslogs-stream-prefix": "ecs" } } } ], "requiresCompatibilities": [ "EC2" ], "cpu": "128", "memory": "64" }
Schritt 5: Instrumentieren Sie Ihre Anwendung
Der nächste Schritt besteht darin, Ihre Anwendung für Application Signals zu instrumentieren.
- Java
-
Um Ihre Bewerbung bei Amazon ECS mit dem CloudWatch Agenten zu instrumentieren
Geben Sie zunächst einen Bind-Mount an. Das Volume wird in den nächsten Schritten verwendet, um Dateien containerübergreifend freizugeben. Sie werden diesen Bind-Mount später in diesem Verfahren verwenden.
"volumes": [ { "name": "opentelemetry-auto-instrumentation" } ]
Fügen Sie einen neuen Container namens
init
an die Aufgabendefinition Ihrer Anwendung an. Ersetzen$IMAGE
mit dem neuesten Bild aus dem ECRImage-Repository von AWS Distro for OpenTelemetry Amazon. { "name": "init", "image": "
$IMAGE
", "essential": false, "command": [ "cp", "/javaagent.jar", "/otel-auto-instrumentation/javaagent.jar" ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "/otel-auto-instrumentation", "readOnly": false } ] }Fügen Sie die folgenden Umgebungsvariablen Ihrem Anwendungs-Container hinzu. Sie müssen Version 1.32.2 oder höher des Agenten AWS Distro for OpenTelemetry Auto-Instrumentation
für Java verwenden. Umgebungsvariable Einstellen zur Aktivierung von Application Signals OTEL_RESOURCE_ATTRIBUTES
Geben Sie die folgenden Informationen als Schlüssel-Wert-Paare an:
service.name
legt den Namen des Services fest. Dies wird in den Dashboards von Application Signals als Servicename der Anwendung angezeigt. Wenn Sie keinen Wert für diesen Schlüssel angeben, wird der Standardwert vonUnknownService
verwendet.deployment.environment
legt die Umgebung fest, in der die Anwendung ausgeführt wird. Dies wird in den Dashboards von Application Signals als Gehostet in-Umgebung Ihrer Anwendung angezeigt. Wenn Sie dies nicht angeben,generic:default
wird der Standardwert von verwendet.
Dieser Attributschlüssel wird nur von Application Signals verwendet und in Röntgen-Trace-Anmerkungen und CloudWatch metrische Dimensionen umgewandelt.
(Optional) Um die Protokollkorrelation für Application Signals
aws.log.group.names
zu aktivieren, legen Sie eine zusätzliche Umgebungsvariable als Protokollgruppennamen für Ihr Anwendungsprotokoll fest. Auf diese Weise können die Traces und Metriken aus Ihrer Anwendung mit den relevanten Protokolleinträgen aus der Protokollgruppe korreliert werden. Ersetzen Sie für diese Variable$YOUR_APPLICATION_LOG_GROUP
durch die Namen der Protokollgruppen für Ihre Anwendung. Wenn Sie mehrere Protokollgruppen haben, können Sie sie mit einem Und-Zeichen (&
) trennen, wie in diesem Beispiel:.aws.log.group.names=log-group-1&log-group-2
Um die Korrelation zwischen Metrik und Protokoll zu aktivieren, reicht es aus, diese aktuelle Umgebungsvariable festzulegen. Weitere Informationen finden Sie unter Korrelation zwischen Metrik und Protokollierung aktivieren. Um die Korrelation zwischen Trace und Protokoll zu aktivieren, müssen Sie auch die Protokollierungskonfiguration in Ihrer Anwendung ändern. Weitere Informationen finden Sie unter Aktivieren Sie die Korrelation zwischen Trace und Protokoll.OTEL_AWS_APPLICATION_SIGNALS_ENABLED
Stellen Sie ein
true
, dass Ihr Container damit beginnt, X-Ray-Traces und CloudWatch -Metriken an Application Signals zu senden.OTEL_METRICS_EXPORTER
Stellen Sie auf
none
ein, um andere Metrik-Exportprogramme zu deaktivieren.OTEL_LOGS_EXPORTER
Stellen Sie diese Option
none
ein, um andere Protokollexportprogramme zu deaktivieren.OTEL_EXPORTER_OTLP_PROTOCOL
Legt fest, dass
http/protobuf
Metriken und Traces an Application HTTP Signals gesendet werden sollen.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT
Sendet Metriken an den CloudWatch Daemon-Container.
Für Anwendungen, die im
host
Modus ausgeführt werden, setzen Sie diesen Wert aufhttp://localhost:4316/v1/metrics
.Für Anwendungen, die im
bridge
Modus oderawsvpc
Modus ausgeführt werden, setzen Sie diesen Wert auf http://CW_CONTAINER_IP
:4316/v1/metrics, woCW_CONTAINER_IP
ist die private IP-Adresse der Container-Instance. EC2 Sie können diese Adresse vom Instance-Metadatendienst (IMDS) abrufen.
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
Sendet Traces an den CloudWatch Daemon-Container.
Für Anwendungen, die im
host
Modus ausgeführt werden, setzen Sie diesen Wert aufhttp://localhost:4316/v1/traces
.Für Anwendungen, die im
bridge
Modus oderawsvpc
Modus ausgeführt werden, setzen Sie diesen Wert auf http://CW_CONTAINER_IP
:4316/v1/traces, woCW_CONTAINER_IP
ist die private IP-Adresse der Container-Instance. EC2 Sie können diese Adresse vom Instance-Metadatendienst (IMDS) abrufen.
OTEL_TRACES_SAMPLER
Stellen Sie dies auf ein,
xray
um X-Ray als Traces-Sampler festzulegen.OTEL_PROPAGATORS
Stellen Sie
xray
es als einen der Propagatoren ein.JAVA_TOOL_OPTIONS
Auf „Ersetzen“ setzen
" -javaagent:$
AWS_ADOT_JAVA_INSTRUMENTATION_PATH
"AWS_ADOT_JAVA_INSTRUMENTATION_PATH
mit dem Pfad, in dem der Autoinstrumentation-Agent von AWS Distro for OpenTelemetry Java gespeichert ist. Beispiel:/otel-auto-instrumentation/javaagent.jar
Mounten Sie das Volume
opentelemetry-auto-instrumentation
, das Sie in Schritt 1 dieses Verfahrens definiert haben. Wenn Sie die Protokollkorrelation mit Metriken und Traces nicht aktivieren müssen, verwenden Sie das folgende Beispiel für eine Java-Anwendung. Wenn Sie die Protokollkorrelation aktivieren möchten, lesen Sie stattdessen den nächsten Schritt.{ "name": "
my-app
", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$SVC_NAME
" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "JAVA_TOOL_OPTIONS", "value": " -javaagent:/otel-auto-instrumentation/javaagent.jar" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/traces" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_PROPAGATORS", "value": "tracecontext,baggage,b3,xray" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "/otel-auto-instrumentation", "readOnly": false } ] }
- Python
-
Bevor Sie Application Signals für Ihre Python-Anwendungen aktivieren, sollten Sie die folgenden Überlegungen beachten.
In einigen containerisierten Anwendungen kann eine fehlende
PYTHONPATH
Umgebungsvariable manchmal dazu führen, dass die Anwendung nicht gestartet werden kann. Um dieses Problem zu beheben, stellen Sie sicher, dass Sie diePYTHONPATH
Umgebungsvariable auf den Speicherort des Arbeitsverzeichnisses Ihrer Anwendung setzen. Dies ist auf ein bekanntes Problem mit der OpenTelemetry automatischen Instrumentierung zurückzuführen. Weitere Informationen zu diesem Problem finden Sie unter Python-Autoinstrumentation-Einstellung von PYTHONPATH ist nicht kompatibel. Für Django-Anwendungen sind zusätzliche Konfigurationen erforderlich, die in der OpenTelemetry Python-Dokumentation
beschrieben werden. Verwenden Sie das
--noreload
Flag, um ein automatisches Neuladen zu verhindern.Setzen Sie die
DJANGO_SETTINGS_MODULE
Umgebungsvariable auf den Speicherort der Datei Ihrer Django-Anwendung.settings.py
Dadurch wird sichergestellt, dass OpenTelemetry Sie korrekt auf Ihre Django-Einstellungen zugreifen und diese integrieren können.
Wenn Sie einen WSGI Server für Ihre Python-Anwendung verwenden, finden Sie zusätzlich zu den folgenden Schritten in diesem Abschnitt Informationen Keine Anwendung signalisiert Daten für eine Python-Anwendung, die einen WSGI Server verwendet zum Funktionieren von Anwendungssignalen unter.
Um Ihre Python-Anwendung auf Amazon ECS mit dem CloudWatch Agenten zu instrumentieren
Geben Sie zunächst einen Bind-Mount an. Das Volume wird in den nächsten Schritten verwendet, um Dateien containerübergreifend freizugeben. Sie werden diesen Bind-Mount später in diesem Verfahren verwenden.
"volumes": [ { "name": "opentelemetry-auto-instrumentation-python" } ]
Fügen Sie einen neuen Container namens
init
an die Aufgabendefinition Ihrer Anwendung an. Ersetzen$IMAGE
mit dem neuesten Bild aus dem ECRImage-Repository von AWS Distro for OpenTelemetry Amazon. { "name": "init", "image": "$IMAGE", "essential": false, "command": [ "cp", "-a", "/autoinstrumentation/.", "/otel-auto-instrumentation-python" ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-python", "containerPath": "/otel-auto-instrumentation-python", "readOnly": false } ] }
Fügen Sie die folgenden Umgebungsvariablen Ihrem Anwendungs-Container hinzu.
Umgebungsvariable Einstellen zur Aktivierung von Application Signals OTEL_RESOURCE_ATTRIBUTES
Geben Sie die folgenden Informationen als Schlüssel-Wert-Paare an:
service.name
legt den Namen des Services fest. Dies wird in den Dashboards von Application Signals als Servicename der Anwendung angezeigt. Wenn Sie keinen Wert für diesen Schlüssel angeben, wird der Standardwert vonUnknownService
verwendet.deployment.environment
legt die Umgebung fest, in der die Anwendung ausgeführt wird. Dies wird in den Dashboards von Application Signals als Gehostet in-Umgebung Ihrer Anwendung angezeigt. Wenn Sie dies nicht angeben,generic:default
wird der Standardwert von verwendet.
Dieser Attributschlüssel wird nur von Application Signals verwendet und in Röntgen-Trace-Anmerkungen und CloudWatch metrische Dimensionen umgewandelt.
(Optional) Um die Protokollkorrelation für Application Signals
aws.log.group.names
zu aktivieren, legen Sie eine zusätzliche Umgebungsvariable als Protokollgruppennamen für Ihr Anwendungsprotokoll fest. Auf diese Weise können die Traces und Metriken aus Ihrer Anwendung mit den relevanten Protokolleinträgen aus der Protokollgruppe korreliert werden. Ersetzen Sie für diese Variable$YOUR_APPLICATION_LOG_GROUP
durch die Namen der Protokollgruppen für Ihre Anwendung. Wenn Sie mehrere Protokollgruppen haben, können Sie sie mit einem Und-Zeichen (&
) trennen, wie in diesem Beispiel:.aws.log.group.names=log-group-1&log-group-2
Um die Korrelation zwischen Metrik und Protokoll zu aktivieren, reicht es aus, diese aktuelle Umgebungsvariable festzulegen. Weitere Informationen finden Sie unter Korrelation zwischen Metrik und Protokollierung aktivieren. Um die Korrelation zwischen Trace und Protokoll zu aktivieren, müssen Sie auch die Protokollierungskonfiguration in Ihrer Anwendung ändern. Weitere Informationen finden Sie unter Aktivieren Sie die Korrelation zwischen Trace und Protokoll.OTEL_AWS_APPLICATION_SIGNALS_ENABLED
Stellen Sie ein
true
, dass Ihr Container damit beginnt, X-Ray-Traces und CloudWatch -Metriken an Application Signals zu senden.OTEL_METRICS_EXPORTER
Stellen Sie auf
none
ein, um andere Metrik-Exportprogramme zu deaktivieren.OTEL_EXPORTER_OTLP_PROTOCOL
Stellen Sie ein,
http/protobuf
dass Metriken und Traces zur CloudWatch Verwendung gesendet HTTP werden sollen.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT
Sendet Metriken an den CloudWatch Daemon-Container.
Für Anwendungen, die im
host
Modus ausgeführt werden, setzen Sie diesen Wert aufhttp://localhost:4316/v1/metrics
.Für Anwendungen, die im
bridge
Modus oderawsvpc
Modus ausgeführt werden, setzen Sie diesen Wert auf http://CW_CONTAINER_IP
:4316/v1/metrics, woCW_CONTAINER_IP
ist die private IP-Adresse der Container-Instance. EC2 Sie können diese Adresse vom Instance-Metadatendienst (IMDS) abrufen.
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
Sendet Traces an den CloudWatch Daemon-Container.
Für Anwendungen, die im
host
Modus ausgeführt werden, setzen Sie diesen Wert aufhttp://localhost:4316/v1/traces
.Für Anwendungen, die im
bridge
Modus oderawsvpc
Modus ausgeführt werden, setzen Sie diesen Wert auf http://CW_CONTAINER_IP
:4316/v1/traces, woCW_CONTAINER_IP
ist die private IP-Adresse der Container-Instance. EC2 Sie können diese Adresse vom Instance-Metadatendienst (IMDS) abrufen.
OTEL_TRACES_SAMPLER
Stellen Sie dies auf ein,
xray
um X-Ray als Traces-Sampler festzulegen.OTEL_TRACES_SAMPLER_ARG
Legt den Endpunkt des Traces-Samplers fest.
Für Anwendungen, die im
host
Modus ausgeführt werden, setzen Sie diesen Wert aufhttp://localhost:2000
.Für Anwendungen, die im
bridge
Modus oderawsvpc
Modus ausgeführt werden, setzen Sie diesen Wert aufhttp://
, wobeiCW_CONTAINER_IP
:2000CW_CONTAINER_IP
ist die private IP-Adresse der EC2 Container-Instance. Sie können diese Adresse vom Instance-Metadatendienst (IMDS) abrufen.
OTEL_PROPAGATORS
xray
Als einen der Propagatoren hinzufügen.OTEL_PYTHON_DISTRO
Auf einstellen,
aws_distro
um die ADOT Python-Instrumentierung zu verwenden.OTEL_PYTHON_CONFIGURATOR
Auf einstellen,
aws_configuration
um die ADOT Python-Konfiguration zu verwenden.PYTHONPATH
$APP_PATH
Ersetzen Sie durch den Speicherort des Arbeitsverzeichnisses der Anwendung innerhalb des Containers. Dies ist erforderlich, damit der Python-Interpreter Ihre Anwendungsmodule finden kann.DJANGO_SETTINGS_MODULE
Nur für Django-Anwendungen erforderlich. Stellen Sie es auf den Speicherort der Datei Ihrer Django-Anwendung ein
settings.py
. Ersetzen$PATH_TO_SETTINGS
.Mounten Sie das Volume
opentelemetry-auto-instrumentation-python
, das Sie in Schritt 1 dieses Verfahrens definiert haben. Wenn Sie die Protokollkorrelation mit Metriken und Traces nicht aktivieren müssen, verwenden Sie das folgende Beispiel für eine Python-Anwendung. Wenn Sie die Protokollkorrelation aktivieren möchten, lesen Sie stattdessen den nächsten Schritt.{ "name": "
my-app
", ... "environment": [ { "name": "PYTHONPATH", "value": "/otel-auto-instrumentation-python/opentelemetry/instrumentation/auto_instrumentation:$APP_PATH:/otel-auto-instrumentation-python" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://CW_CONTAINER_IP
:2000" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_PYTHON_DISTRO", "value": "aws_distro" }, { "name": "OTEL_PYTHON_CONFIGURATOR", "value": "aws_configurator" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/traces" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/metrics" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$SVC_NAME
" }, { "name": "DJANGO_SETTINGS_MODULE", "value": "$PATH_TO_SETTINGS
.settings" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-python", "containerPath": "/otel-auto-instrumentation-python", "readOnly": false } ] }(Optional) Um die Protokollkorrelation zu aktivieren, gehen Sie wie folgt vor, bevor Sie das Volume mounten. Legen Sie unter eine zusätzliche Umgebungsvariable
aws.log.group.names
für die Protokollgruppen Ihrer Anwendung fest.OTEL_RESOURCE_ATTRIBUTES
Auf diese Weise können die Traces und Metriken aus Ihrer Anwendung mit den relevanten Protokolleinträgen aus diesen Protokollgruppen korreliert werden. Ersetzen Sie für diese Variable$YOUR_APPLICATION_LOG_GROUP
durch die Namen der Protokollgruppen für Ihre Anwendung. Wenn Sie mehrere Protokollgruppen haben, können Sie sie mit einem Und-Zeichen (&
) trennen, wie in diesem Beispiel:.aws.log.group.names=log-group-1&log-group-2
Um die Korrelation zwischen Metrik und Protokoll zu aktivieren, reicht es aus, diese aktuelle Umgebungsvariable festzulegen. Weitere Informationen finden Sie unter Korrelation zwischen Metrik und Protokollierung aktivieren. Um die Korrelation zwischen Trace und Protokoll zu aktivieren, müssen Sie auch die Protokollierungskonfiguration in Ihrer Anwendung ändern. Weitere Informationen finden Sie unter Aktivieren Sie die Korrelation zwischen Trace und Protokoll.Im Folgenden wird ein Beispiel gezeigt. Verwenden Sie dieses Beispiel, um die Protokollkorrelation zu aktivieren, wenn Sie
opentelemetry-auto-instrumentation-python
das Volume mounten, das Sie in Schritt 1 dieses Verfahrens definiert haben.{ "name": "
my-app
", ... "environment": [ { "name": "PYTHONPATH", "value": "/otel-auto-instrumentation-python/opentelemetry/instrumentation/auto_instrumentation:$APP_PATH:/otel-auto-instrumentation-python" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://CW_CONTAINER_IP
:2000" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_PYTHON_DISTRO", "value": "aws_distro" }, { "name": "OTEL_PYTHON_CONFIGURATOR", "value": "aws_configurator" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/traces" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/metrics" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP
,service.name=$SVC_NAME
" }, { "name": "DJANGO_SETTINGS_MODULE", "value": "$PATH_TO_SETTINGS
.settings" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-python", "containerPath": "/otel-auto-instrumentation-python", "readOnly": false } ] }
- .NET
-
Um Ihre Bewerbung bei Amazon ECS mit dem CloudWatch Agenten zu instrumentieren
Geben Sie zunächst einen Bind-Mount an. Das Volume wird in den nächsten Schritten verwendet, um Dateien containerübergreifend freizugeben. Sie werden diesen Bind-Mount später in diesem Verfahren verwenden.
"volumes": [ { "name": "opentelemetry-auto-instrumentation" } ]
Fügen Sie einen neuen Container namens
init
an die Aufgabendefinition Ihrer Anwendung an. Ersetzen$IMAGE
mit dem neuesten Bild aus dem ECRImage-Repository von AWS Distro for OpenTelemetry Amazon. Verwenden Sie für eine Linux-Container-Instance Folgendes.
{ "name": "init", "image": "
$IMAGE
", "essential": false, "command": [ "cp", "-a", "autoinstrumentation/.", "/otel-auto-instrumentation" ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "/otel-auto-instrumentation", "readOnly": false } ] }Verwenden Sie für eine Windows Server-Container-Instance Folgendes.
{ "name": "init", "image": "
$IMAGE
", "essential": false, "command": [ "CMD", "/c", "xcopy", "/e", "C:\\autoinstrumentation\\*", "C:\\otel-auto-instrumentation", "&&", "icacls", "C:\\otel-auto-instrumentation", "/grant", "*S-1-1-0:R", "/T" ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "C:\\otel-auto-instrumentation", "readOnly": false } ] }Fügen Sie eine Abhängigkeit vom
init
Container hinzu, um sicherzustellen, dass der Container fertig ist, bevor Ihr Anwendungscontainer gestartet wird."dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ]
Fügen Sie die folgenden Umgebungsvariablen Ihrem Anwendungs-Container hinzu. Sie müssen Version 1.1.0 oder höher des Agenten AWS Distro for OpenTelemetry Auto-Instrumentation für verwenden. NET
. Umgebungsvariable Einstellen zur Aktivierung von Application Signals OTEL_RESOURCE_ATTRIBUTES
Geben Sie die folgenden Informationen als Schlüssel-Wert-Paare an:
service.name
legt den Namen des Services fest. Dies wird in den Dashboards von Application Signals als Servicename der Anwendung angezeigt. Wenn Sie keinen Wert für diesen Schlüssel angeben, wird der Standardwert vonUnknownService
verwendet.deployment.environment
legt die Umgebung fest, in der die Anwendung ausgeführt wird. Dies wird in den Dashboards von Application Signals als Gehostet in-Umgebung Ihrer Anwendung angezeigt. Wenn Sie dies nicht angeben,generic:default
wird der Standardwert von verwendet.
Dieser Attributschlüssel wird nur von Application Signals verwendet und in Röntgen-Trace-Anmerkungen und CloudWatch metrische Dimensionen umgewandelt.
OTEL_AWS_APPLICATION_SIGNALS_ENABLED
Stellen Sie ein
true
, dass Ihr Container damit beginnt, X-Ray-Traces und CloudWatch -Metriken an Application Signals zu senden.OTEL_METRICS_EXPORTER
Stellen Sie auf
none
ein, um andere Metrik-Exportprogramme zu deaktivieren.OTEL_LOGS_EXPORTER
Stellen Sie diese Option
none
ein, um andere Protokollexportprogramme zu deaktivieren.OTEL_EXPORTER_OTLP_PROTOCOL
Legt fest, dass
http/protobuf
Metriken und Traces an Application HTTP Signals gesendet werden sollen.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT
Sendet Metriken an den CloudWatch Daemon-Container.
Für Anwendungen, die im
host
Modus ausgeführt werden, setzen Sie diesen Wert aufhttp://localhost:4316/v1/metrics
.Für Anwendungen, die im
bridge
Modus oderawsvpc
Modus ausgeführt werden, setzen Sie diesen Wert auf http://CW_CONTAINER_IP
:4316/v1/metrics, woCW_CONTAINER_IP
ist die private IP-Adresse der Container-Instance. EC2 Sie können diese Adresse vom Instance-Metadatendienst (IMDS) abrufen.
OTEL_EXPORTER_OTLP_ENDPOINT
Sendet Traces an den CloudWatch Daemon-Container.
Für Anwendungen, die im
host
Modus ausgeführt werden, setzen Sie diesen Wert aufhttp://localhost:4316
.Für Anwendungen, die im
bridge
Modus oderawsvpc
Modus ausgeführt werden, setzen Sie diesen Wert auf http://CW_CONTAINER_IP
:4316, woCW_CONTAINER_IP
ist die private IP-Adresse der EC2 Container-Instance. Sie können diese Adresse vom Instance-Metadatendienst (IMDS) abrufen.
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
Sendet Traces an den CloudWatch Daemon-Container.
Für Anwendungen, die im
host
Modus ausgeführt werden, setzen Sie diesen Wert aufhttp://localhost:4316/v1/traces
.Für Anwendungen, die im
bridge
Modus oderawsvpc
Modus ausgeführt werden, setzen Sie diesen Wert auf http://CW_CONTAINER_IP
:4316/v1/traces, woCW_CONTAINER_IP
ist die private IP-Adresse der Container-Instance. EC2 Sie können diese Adresse vom Instance-Metadatendienst (IMDS) abrufen.
OTEL_TRACES_SAMPLER_ARG
Legt den Traces-Sampler-Endpunkt fest.
Für Anwendungen, die im
host
Modus ausgeführt werden, setzen Sie diesen Wert aufhttp://localhost:2000
.Für Anwendungen, die im
bridge
Modus oderawsvpc
Modus ausgeführt werden, setzen Sie diesen Wert aufhttp://
, wobeiCW_CONTAINER_IP
:2000CW_CONTAINER_IP
ist die private IP-Adresse der EC2 Container-Instance. Sie können diese Adresse vom Instance-Metadatendienst (IMDS) abrufen.
OTEL_DOTNET_AUTO_HOME
Stellen Sie das Installationsverzeichnis von einADOT. NETautomatische Instrumentierung.
OTEL_DOTNET_AUTO_PLUGINS
Auf einstellen,
AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation
um das Application Signals-Plugin zu aktivieren.CORECLR_ENABLE_PROFILING
Auf setzen,
1
um den Profiler zu aktivieren.CORECLR_PROFILER
Auf
{918728DD-259F-4A6A-AC2B-B85E1B658318}
als für den CLSID Profiler eingestellt.CORECLR_PROFILER_PATH
Stellen Sie dies auf den Pfad des Profilers ein.
Stellen Sie es unter Linux auf
${OTEL_DOTNET_AUTO_HOME}/linux-x64/OpenTelemetry.AutoInstrumentation.Native.so
Stellen Sie ihn unter Windows Server auf ein
${OTEL_DOTNET_AUTO_HOME}/win-x64/OpenTelemetry.AutoInstrumentation.Native.dll
DOTNET_ADDITIONAL_DEPS
Stellen Sie dies auf den Ordnerpfad von ein
${OTEL_DOTNET_AUTO_HOME}/AdditionalDeps
.DOTNET_SHARED_STORE
Stellen Sie dies auf den Ordnerpfad von ein
${OTEL_DOTNET_AUTO_HOME}/store
.DOTNET_STARTUP_HOOKS
Geben Sie hier den Pfad der verwalteten Assembly
${OTEL_DOTNET_AUTO_HOME}/net/OpenTelemetry.AutoInstrumentation.StartupHook.dll
an, die vor dem Einstiegspunkt der Hauptanwendung ausgeführt werden soll.Mounten Sie das Volume
opentelemetry-auto-instrumentation
, das Sie in Schritt 1 dieses Verfahrens definiert haben. Verwenden Sie für Linux Folgendes.{ "name": "
my-app
", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$SVC_NAME" }, { "name": "CORECLR_ENABLE_PROFILING", "value": "1" }, { "name": "CORECLR_PROFILER", "value": "{918728DD-259F-4A6A-AC2B-B85E1B658318}" }, { "name": "CORECLR_PROFILER_PATH", "value": "/otel-auto-instrumentation/linux-x64/OpenTelemetry.AutoInstrumentation.Native.so" }, { "name": "DOTNET_ADDITIONAL_DEPS", "value": "/otel-auto-instrumentation/AdditionalDeps" }, { "name": "DOTNET_SHARED_STORE", "value": "/otel-auto-instrumentation/store" }, { "name": "DOTNET_STARTUP_HOOKS", "value": "/otel-auto-instrumentation/net/OpenTelemetry.AutoInstrumentation.StartupHook.dll" }, { "name": "OTEL_DOTNET_AUTO_HOME", "value": "/otel-auto-instrumentation" }, { "name": "OTEL_DOTNET_AUTO_PLUGINS", "value": "AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation" }, { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP
,service.name=aws-otel-integ-test" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://localhost:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/traces" }, { "name": "OTEL_EXPORTER_OTLP_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://CW_CONTAINER_IP
:2000" }, { "name": "OTEL_PROPAGATORS", "value": "tracecontext,baggage,b3,xray" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "/otel-auto-instrumentation", "readOnly": false } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ] }Verwenden Sie für Windows Server Folgendes.
{ "name": "
my-app
", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$SVC_NAME" }, { "name": "CORECLR_ENABLE_PROFILING", "value": "1" }, { "name": "CORECLR_PROFILER", "value": "{918728DD-259F-4A6A-AC2B-B85E1B658318}" }, { "name": "CORECLR_PROFILER_PATH", "value": "C:\\otel-auto-instrumentation\\win-x64\\OpenTelemetry.AutoInstrumentation.Native.dll" }, { "name": "DOTNET_ADDITIONAL_DEPS", "value": "C:\\otel-auto-instrumentation\\AdditionalDeps" }, { "name": "DOTNET_SHARED_STORE", "value": "C:\\otel-auto-instrumentation\\store" }, { "name": "DOTNET_STARTUP_HOOKS", "value": "C:\\otel-auto-instrumentation\\net\\OpenTelemetry.AutoInstrumentation.StartupHook.dll" }, { "name": "OTEL_DOTNET_AUTO_HOME", "value": "C:\\otel-auto-instrumentation" }, { "name": "OTEL_DOTNET_AUTO_PLUGINS", "value": "AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation" }, { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP
,service.name=aws-otel-integ-test" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/traces" }, { "name": "OTEL_EXPORTER_OTLP_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://CW_CONTAINER_IP
:2000" }, { "name": "OTEL_PROPAGATORS", "value": "tracecontext,baggage,b3,xray" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "C:\\otel-auto-instrumentation", "readOnly": false } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ] }
- Node.js
-
Anmerkung
Wenn Sie Application Signals für eine Node.js -Anwendung mit aktivieren, lesen Sie nachESM, Setting up a Node.js application with the ESM module format bevor Sie mit diesen Schritten beginnen.
Um Ihre Bewerbung bei Amazon ECS mit dem CloudWatch Agenten zu instrumentieren
Geben Sie zunächst einen Bind-Mount an. Das Volume wird in den nächsten Schritten verwendet, um Dateien containerübergreifend freizugeben. Sie werden diesen Bind-Mount später in diesem Verfahren verwenden.
"volumes": [ { "name": "opentelemetry-auto-instrumentation-node" } ]
Fügen Sie einen neuen Container namens
init
an die Aufgabendefinition Ihrer Anwendung an. Ersetzen$IMAGE
mit dem neuesten Bild aus dem ECRImage-Repository von AWS Distro for OpenTelemetry Amazon. { "name": "init", "image": "
$IMAGE
", "essential": false, "command": [ "cp", "-a", "/autoinstrumentation/.", "/otel-auto-instrumentation-node" ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-node", "containerPath": "/otel-auto-instrumentation-node", "readOnly": false } ], }Fügen Sie die folgenden Umgebungsvariablen Ihrem Anwendungs-Container hinzu.
Umgebungsvariable Einstellen zur Aktivierung von Application Signals OTEL_RESOURCE_ATTRIBUTES
Geben Sie die folgenden Informationen als Schlüssel-Wert-Paare an:
service.name
legt den Namen des Services fest. Dies wird in den Dashboards von Application Signals als Servicename der Anwendung angezeigt. Wenn Sie keinen Wert für diesen Schlüssel angeben, wird der Standardwert vonUnknownService
verwendet.deployment.environment
legt die Umgebung fest, in der die Anwendung ausgeführt wird. Dies wird in den Dashboards von Application Signals als Gehostet in-Umgebung Ihrer Anwendung angezeigt. Wenn Sie dies nicht angeben,generic:default
wird der Standardwert von verwendet.
Dieser Attributschlüssel wird nur von Application Signals verwendet und in Röntgen-Trace-Anmerkungen und CloudWatch metrische Dimensionen umgewandelt.
(Optional) Um die Protokollkorrelation für Application Signals
aws.log.group.names
zu aktivieren, legen Sie eine zusätzliche Umgebungsvariable als Protokollgruppennamen für Ihr Anwendungsprotokoll fest. Auf diese Weise können die Traces und Metriken aus Ihrer Anwendung mit den relevanten Protokolleinträgen aus der Protokollgruppe korreliert werden. Ersetzen Sie für diese Variable$YOUR_APPLICATION_LOG_GROUP
durch die Namen der Protokollgruppen für Ihre Anwendung. Wenn Sie mehrere Protokollgruppen haben, können Sie sie mit einem Und-Zeichen (&
) trennen, wie in diesem Beispiel:.aws.log.group.names=log-group-1&log-group-2
Um die Korrelation zwischen Metrik und Protokoll zu aktivieren, reicht es aus, diese aktuelle Umgebungsvariable festzulegen. Weitere Informationen finden Sie unter Korrelation zwischen Metrik und Protokollierung aktivieren. Um die Korrelation zwischen Trace und Protokoll zu aktivieren, müssen Sie auch die Protokollierungskonfiguration in Ihrer Anwendung ändern. Weitere Informationen finden Sie unter Aktivieren Sie die Korrelation zwischen Trace und Protokoll.OTEL_AWS_APPLICATION_SIGNALS_ENABLED
Stellen Sie ein
true
, dass Ihr Container damit beginnt, X-Ray-Traces und CloudWatch -Metriken an Application Signals zu senden.OTEL_METRICS_EXPORTER
Stellen Sie auf
none
ein, um andere Metrik-Exportprogramme zu deaktivieren.OTEL_LOGS_EXPORTER
Stellen Sie diese Option
none
ein, um andere Protokollexportprogramme zu deaktivieren.OTEL_EXPORTER_OTLP_PROTOCOL
Wird auf gesetzt,
http/protobuf
um Metriken und Traces mitOTLP/HTTPund protobuf an Application Signals zu senden.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT
Sendet Metriken an den CloudWatch Daemon-Container.
Für Anwendungen, die im
host
Modus ausgeführt werden, setzen Sie diesen Wert aufhttp://localhost:4316/v1/metrics
.Für Anwendungen, die im
bridge
Modus oderawsvpc
Modus ausgeführt werden, setzen Sie diesen Wert auf http://CW_CONTAINER_IP
:4316/v1/metrics, woCW_CONTAINER_IP
ist die private IP-Adresse der Container-Instance. EC2 Sie können diese Adresse vom Instance-Metadatendienst (IMDS) abrufen.
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
Sendet Traces an den CloudWatch Daemon-Container.
Für Anwendungen, die im
host
Modus ausgeführt werden, setzen Sie diesen Wert aufhttp://localhost:4316/v1/traces
.Für Anwendungen, die im
bridge
Modus oderawsvpc
Modus ausgeführt werden, setzen Sie diesen Wert auf http://CW_CONTAINER_IP
:4316/v1/traces, woCW_CONTAINER_IP
ist die private IP-Adresse der Container-Instance. EC2 Sie können diese Adresse vom Instance-Metadatendienst (IMDS) abrufen.
OTEL_TRACES_SAMPLER
Stellen Sie dies auf ein,
xray
um X-Ray als Traces-Sampler festzulegen.OTEL_TRACES_SAMPLER_ARG
Legt den Endpunkt des Traces-Samplers fest.
Für Anwendungen, die im
host
Modus ausgeführt werden, setzen Sie diesen Wert aufhttp://localhost:2000
.Für Anwendungen, die im
bridge
Modus oderawsvpc
Modus ausgeführt werden, setzen Sie diesen Wert aufhttp://
, wobeiCW_CONTAINER_IP
:2000CW_CONTAINER_IP
ist die private IP-Adresse der EC2 Container-Instance. Sie können diese Adresse vom Instance-Metadatendienst (IMDS) abrufen.
OTEL_PROPAGATORS
xray
Als einer der Propagatoren festlegen.NODE_OPTIONS
Setzen Sie diesen Wert auf
--require
. ErsetzenAWS_ADOT_NODE_INSTRUMENTATION_PATH
AWS_ADOT_NODE_INSTRUMENTATION_PATH
mit dem Pfad, in dem die automatische Instrumentierung von AWS Distro for OpenTelemetry Node.js gespeichert ist. Beispiel:/otel-auto-instrumentation-node/autoinstrumentation.js
Mounten Sie das Volume
opentelemetry-auto-instrumentation-node
, das Sie in Schritt 1 dieses Verfahrens definiert haben. Wenn Sie die Protokollkorrelation mit Metriken und Traces nicht aktivieren müssen, verwenden Sie das folgende Beispiel für eine Anwendung vom Typ Node.js. Wenn Sie die Protokollkorrelation aktivieren möchten, lesen Sie stattdessen den nächsten Schritt.Fügen Sie für Ihren Anwendungscontainer eine Abhängigkeit vom
init
Container hinzu, um sicherzustellen, dass der Container fertig ist, bevor Ihr Anwendungscontainer gestartet wird.{ "name": "
my-app
", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$SVC_NAME
" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/traces" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://CW_CONTAINER_IP
:2000" }, { "name": "NODE_OPTIONS", "value": "--require /otel-auto-instrumentation-node/autoinstrumentation.js" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-node", "containerPath": "/otel-auto-instrumentation-node", "readOnly": false } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ] }(Optional) Um die Protokollkorrelation zu aktivieren, gehen Sie wie folgt vor, bevor Sie das Volume mounten. Legen Sie unter eine zusätzliche Umgebungsvariable
aws.log.group.names
für die Protokollgruppen Ihrer Anwendung fest.OTEL_RESOURCE_ATTRIBUTES
Auf diese Weise können die Traces und Metriken aus Ihrer Anwendung mit den relevanten Protokolleinträgen aus diesen Protokollgruppen korreliert werden. Ersetzen Sie für diese Variable$YOUR_APPLICATION_LOG_GROUP
durch die Namen der Protokollgruppen für Ihre Anwendung. Wenn Sie mehrere Protokollgruppen haben, können Sie sie mit einem Und-Zeichen (&
) trennen, wie in diesem Beispiel:.aws.log.group.names=log-group-1&log-group-2
Um die Korrelation zwischen Metrik und Protokoll zu aktivieren, reicht es aus, diese aktuelle Umgebungsvariable festzulegen. Weitere Informationen finden Sie unter Korrelation zwischen Metrik und Protokollierung aktivieren. Um die Korrelation zwischen Trace und Protokoll zu aktivieren, müssen Sie auch die Protokollierungskonfiguration in Ihrer Anwendung ändern. Weitere Informationen finden Sie unter Aktivieren Sie die Korrelation zwischen Trace und Protokoll.Im Folgenden wird ein Beispiel gezeigt. Verwenden Sie dieses Beispiel, um die Protokollkorrelation zu aktivieren, wenn Sie
opentelemetry-auto-instrumentation
das Volume mounten, das Sie in Schritt 1 dieses Verfahrens definiert haben.{ "name": "
my-app
", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP
,service.name=$SVC_NAME
" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/traces" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://CW_CONTAINER_IP
:2000" }, { "name": "NODE_OPTIONS", "value": "--require /otel-auto-instrumentation-node/autoinstrumentation.js" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-node", "containerPath": "/otel-auto-instrumentation-node", "readOnly": false } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ] }
Eine Anwendung Node.js mit dem ESM Modulformat einrichten
Wir bieten eingeschränkte Unterstützung für Node.js -Anwendungen im ESM Modulformat. Details hierzu finden Sie unter Bekannte Einschränkungen für Node.js mit ESM.
Für das ESM Modulformat gilt die Verwendung des
init
Containers zum Einfügen der Instrumentierung Node.js SDK nicht. Um Application Signals for Node.js mit zu aktivierenESM, überspringen Sie die Schritte 1 und 2 des vorherigen Verfahrens und gehen Sie stattdessen wie folgt vor.Um Application Signals für eine Node.js -Anwendung zu aktivieren, verwenden Sie ESM
Installieren Sie die relevanten Abhängigkeiten in Ihrer Anwendung Node.js für die automatische Instrumentierung:
npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation npm install @opentelemetry/instrumentation@0.54.0
Entfernen Sie in den Schritten 4 und 5 des vorherigen Verfahrens die Halterung des Volumes
opentelemetry-auto-instrumentation-node
:"mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-node", "containerPath": "/otel-auto-instrumentation-node", "readOnly": false } ]
Ersetzen Sie die Knotenoptionen durch die folgenden Optionen.
{ "name": "NODE_OPTIONS", "value": "--import @aws/aws-distro-opentelemetry-node-autoinstrumentation/register --experimental-loader=@opentelemetry/instrumentation/hook.mjs" }
Schritt 6: Stellen Sie Ihre Anwendung bereit
Erstellen Sie eine neue Version Ihrer Aufgabendefinition und stellen Sie sie in Ihrem Anwendungscluster bereit. In der neu erstellten Aufgabe sollten Sie zwei Container sehen:
init
— Ein erforderlicher Container für die Initialisierung von Anwendungssignalen
— Dies ist der Beispiel-Anwendungscontainer in unserer Dokumentation. In Ihren tatsächlichen Workloads ist dieser spezielle Container möglicherweise nicht vorhanden oder er wurde möglicherweise durch Ihre eigenen Servicecontainer ersetzt.my-app