Bereitstellen mit der Daemon-Strategie
Schritt 1: Application Signals in Ihrem Konto aktivieren
Sie müssen Application Signals zuerst in Ihrem Konto aktivieren. Wenn Sie dies nicht getan haben, siehe Application Signals in Ihrem Konto aktivieren.
Schritt 2: IAM-Rollen erstellen
Sie müssen eine IAM-Rolle erstellen. Wenn Sie diese Rolle bereits erstellt haben, müssen Sie ihr möglicherweise Berechtigungen hinzufügen.
-
ECS-Aufgabenrolle – Container verwenden diese Rolle zum Ausführen. Die Berechtigungen sollten diejenigen sein, welche die Anwendungen benötigen, sowie CloudWatchAgentServerPolicy.
Weitere Informationen zum Erstellen von IAM-Rollen finden Sie unter Erstellen von IAM-Rollen.
Schritt 3: Die Konfiguration des CloudWatch-Agenten vorbereiten
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 dann diese Konfiguration in den SSM-Parameterspeicher hoch. Geben Sie dazu den folgenden Befehl ein. Ersetzen Sie in der Datei $REGION durch Ihren tatsächlichen Regionsnamen.
aws ssm put-parameter \ --name "ecs-cwagent" \ --type "String" \ --value "`cat /tmp/ecs-cwagent.json`" \ --region "$REGION"
Schritt 4: Bereitstellen des CloudWatch-Agent-Daemon-Service
Erstellen Sie die folgende Aufgabendefinition und stellen Sie sie in Ihrem Anwendungscluster bereit. Ersetzen Sie $REGION durch Ihren tatsächlichen Regionsnamen. Ersetzen Sie $TASK_ROLE_ARN und $EXECUTION_ROLE_ARN durch die IAM-Rollen, für die Sie sich in Schritt 2: IAM-Rollen erstellen vorbereitet haben. Ersetzen Sie $IMAGE durch den Pfad zum neuesten CloudWatch-Container-Image in der Amazon Elastic Container Registry. Weitere Informationen finden Sie unter cloudwatch-agent
Anmerkung
Der Daemon-Service macht zwei Ports auf dem Host verfügbar, wobei 4316 als Endpunkt für den Empfang von Metriken und Ablaufverfolgungen und 2000 als CloudWatch-Ablaufverfolgungssampler-Endpunkt verwendet wird. Dieses Setup ermöglicht es dem Agenten, Telemetriedaten von allen Anwendungsaufgaben zu erfassen und zu übertragen, die auf dem Host ausgeführt werden. Stellen Sie sicher, dass diese Ports nicht von anderen Services 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: Ihre Anwendung instrumentieren
Der nächste Schritt besteht darin, Ihre Anwendung für Application Signals zu instrumentieren.
- Java
-
So instrumentieren Sie Ihre Anwendung in Amazon ECS mit dem CloudWatch-Agenten
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
initan die Aufgabendefinition Ihrer Anwendung an. Ersetzen Sie$IMAGEdurch das neueste Image aus dem Amazon-ECR-Image-Repository von AWS Distro für OpenTelemetry. { "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 eine Abhängigkeit auf dem
init-Container hinzu, um sicherzustellen, dass dieser 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.32.2 oder höher des Autoinstrumentations-Agenten AWS Distro für OpenTelemetry für Java
verwenden. Umgebungsvariable Einstellen zur Aktivierung von Application Signals OTEL_RESOURCE_ATTRIBUTESGeben Sie die folgende Information als Schlüssel-Wert-Paare an:
service.namelegt 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 vonUnknownServiceverwendet.deployment.environmentlegt 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 das nicht angeben, wird der Standardwertgeneric:defaultverwendet.
Dieser Attributschlüssel wird nur von Application Signals verwendet und wird in X-Ray-Trace-Anmerkungen und CloudWatch-Metrikdimensionen umgewandelt.
(Optional) Um die Protokollkorrelation für Application Signals zu aktivieren, legen Sie eine zusätzliche Umgebungsvariable
aws.log.group.namesals Protokollgruppennamen für Ihr Anwendungsprotokoll fest. Auf diese Weise können die Ablaufverfolgungen und Metriken aus Ihrer Anwendung mit den relevanten Protokolleinträgen aus dieser Protokollgruppe korreliert werden. Ersetzen Sie für diese Variable$YOUR_APPLICATION_LOG_GROUPdurch 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 Metrik zur Protokollierungskorrelation aktivieren. Um die Korrelation zwischen Ablaufverfolgung und Protokoll zu aktivieren, müssen Sie auch die Protokollierungskonfiguration in Ihrer Anwendung ändern. Weitere Informationen finden Sie unter Die Korrelation von Ablaufverfolgung zu Protokollen aktivieren.OTEL_AWS_APPLICATION_SIGNALS_ENABLEDSetzen Sie den Wert auf
true, damit Ihr Container beginnt, X-Ray-Ablaufverfolgungen und CloudWatch-Metriken an Application Signals zu senden.OTEL_METRICS_EXPORTERStellen Sie auf
noneein, um andere Metrik-Exportprogramme zu deaktivieren.OTEL_LOGS_EXPORTERSetzen Sie den Wert auf
none, um andere Protokoll-Exportprogramme zu deaktivieren.OTEL_EXPORTER_OTLP_PROTOCOLSetzen Sie den Wert auf
http/protobuf, um Metriken und Ablaufverfolgungen über HTTP an Application Signals zu senden.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINTSendet Metriken an den CloudWatch-Daemon-Container.
Stellen Sie dies für Anwendungen, die im
host-Modus ausgeführt werden, aufhttp://localhost:4316/v1/metricsein.Für Anwendungen, die im
bridge- oderawsvpc-Modus ausgeführt werden, setzen Sie diesen Wert auf http://CW_CONTAINER_IP:4316/v1/metrics,, wobeiCW_CONTAINER_IPdie private IP-Adresse der EC2-Container-Instance ist. Sie können diese Adresse vom Instance Metadata Service (IMDS) abrufen.
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTSendet Ablaufverfolgungen an den CloudWatch-Daemon-Container.
Stellen Sie dies für Anwendungen, die im
host-Modus ausgeführt werden, aufhttp://localhost:4316/v1/tracesein.Für Anwendungen, die im
bridge- oderawsvpc-Modus ausgeführt werden, setzen Sie diesen Wert auf http://CW_CONTAINER_IP:4316/v1/traces, wobeiCW_CONTAINER_IPdie private IP-Adresse der EC2-Container-Instance ist. Sie können diese Adresse vom Instance Metadata Service (IMDS) abrufen.
OTEL_TRACES_SAMPLERSetzen Sie den Wert auf
xray, um X-Ray als den Ablaufverfolgungssampler zu verwenden.OTEL_PROPAGATORSLegen Sie
xrayals einen der Propagatoren fest.JAVA_TOOL_OPTIONSSetzen Sie den Wert auf
" -javaagent:$, umAWS_ADOT_JAVA_INSTRUMENTATION_PATH"AWS_ADOT_JAVA_INSTRUMENTATION_PATHmit dem Pfad zu ersetzen, in dem der Java-Autoinstrumentations-Agent von AWS Distro für OpenTelemetry gespeichert ist. Beispiel:/otel-auto-instrumentation/javaagent.jarMounten Sie das Volume
opentelemetry-auto-instrumentation, das Sie in Schritt 1 dieses Verfahrens definiert haben. Wenn Sie die Protokollkorrelation mit Metriken und Ablaufverfolgungen nicht aktivieren müssen, verwenden Sie das folgende Beispiel für eine Java-Anwendung. Wenn Sie die Protokollkorrelation aktivieren möchten, gehen Sie zum nächsten Schritt über.{ "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" } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ], "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 Punkte 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 automatischen Instrumentierung von OpenTelemetry zurückzuführen. Weitere Informationen zu diesem Problem finden Sie unter Python-Autoinstrumentierungs-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.Legen Sie die
DJANGO_SETTINGS_MODULE-Umgebungsvariable für den Speicherort dersettings.py-Datei Ihrer Django-Anwendung fest. Dadurch wird sichergestellt, dass OpenTelemetry korrekt auf Ihre Django-Einstellungen zugreifen und diese integrieren kann.
Wenn Sie einen WSGI-Server für Ihre Python-Anwendung verwenden, finden Sie zusätzlich zu den folgenden Schritten in diesem Abschnitt Informationen zur Verwendung von Application Signals unter Keine Application-Signals-Daten für eine Python-Anwendung, die einen WSGI-Server verwendet.
So instrumentieren Sie Ihre Python-Anwendung in Amazon ECS mit dem CloudWatch-Agenten
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
initan die Aufgabendefinition Ihrer Anwendung an. Ersetzen Sie$IMAGEdurch das neueste Image aus dem Amazon-ECR-Image-Repository von AWS Distro für OpenTelemetry. { "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 eine Abhängigkeit auf dem
init-Container hinzu, um sicherzustellen, dass dieser Container fertig ist, bevor Ihr Anwendungscontainer gestartet wird."dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ]Fügen Sie die folgenden Umgebungsvariablen Ihrem Anwendungs-Container hinzu.
Umgebungsvariable Einstellen zur Aktivierung von Application Signals OTEL_RESOURCE_ATTRIBUTESGeben Sie die folgende Information als Schlüssel-Wert-Paare an:
service.namelegt 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 vonUnknownServiceverwendet.deployment.environmentlegt 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 das nicht angeben, wird der Standardwertgeneric:defaultverwendet.
Dieser Attributschlüssel wird nur von Application Signals verwendet und wird in X-Ray-Trace-Anmerkungen und CloudWatch-Metrikdimensionen umgewandelt.
(Optional) Um die Protokollkorrelation für Application Signals zu aktivieren, legen Sie eine zusätzliche Umgebungsvariable
aws.log.group.namesals Protokollgruppennamen für Ihr Anwendungsprotokoll fest. Auf diese Weise können die Ablaufverfolgungen und Metriken aus Ihrer Anwendung mit den relevanten Protokolleinträgen aus dieser Protokollgruppe korreliert werden. Ersetzen Sie für diese Variable$YOUR_APPLICATION_LOG_GROUPdurch 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 Metrik zur Protokollierungskorrelation aktivieren. Um die Korrelation zwischen Ablaufverfolgung und Protokoll zu aktivieren, müssen Sie auch die Protokollierungskonfiguration in Ihrer Anwendung ändern. Weitere Informationen finden Sie unter Die Korrelation von Ablaufverfolgung zu Protokollen aktivieren.OTEL_AWS_APPLICATION_SIGNALS_ENABLEDSetzen Sie den Wert auf
true, damit Ihr Container beginnt, X-Ray-Ablaufverfolgungen und CloudWatch-Metriken an Application Signals zu senden.OTEL_METRICS_EXPORTERStellen Sie auf
noneein, um andere Metrik-Exportprogramme zu deaktivieren.OTEL_EXPORTER_OTLP_PROTOCOLSetzen Sie den Wert auf
http/protobuf, damit Metriken und Ablaufverfolgungen über HTTP an CloudWatch gesendet werden.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINTSendet Metriken an den CloudWatch-Daemon-Container.
Stellen Sie dies für Anwendungen, die im
host-Modus ausgeführt werden, aufhttp://localhost:4316/v1/metricsein.Für Anwendungen, die im
bridge- oderawsvpc-Modus ausgeführt werden, setzen Sie diesen Wert auf http://CW_CONTAINER_IP:4316/v1/metrics,, wobeiCW_CONTAINER_IPdie private IP-Adresse der EC2-Container-Instance ist. Sie können diese Adresse vom Instance Metadata Service (IMDS) abrufen.
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTSendet 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- oderawsvpc-Modus ausgeführt werden, setzen Sie diesen Wert auf http://CW_CONTAINER_IP:4316/v1/traces, wobeiCW_CONTAINER_IPdie private IP-Adresse der EC2-Container-Instance ist. Sie können diese Adresse vom Instance Metadata Service (IMDS) abrufen.
OTEL_TRACES_SAMPLERSetzen Sie den Wert auf
xray, um X-Ray als den Ablaufverfolgungssampler zu verwenden.OTEL_TRACES_SAMPLER_ARGLegt den Endpunkt des Ablaufverfolgungssamplers fest.
Für Anwendungen, die im
host-Modus ausgeführt werden, setzen Sie diesen Wert aufhttp://localhost:2000.Für Anwendungen, die im
bridge- oderawsvpc-Modus ausgeführt werden, legen Sie diesen Wert aufhttp://fest, wobeiCW_CONTAINER_IP:2000CW_CONTAINER_IPdie private IP-Adresse der EC2-Container-Instance ist. Sie können diese Adresse vom Instance Metadata Service (IMDS) abrufen.
OTEL_PROPAGATORSFügen Sie
xrayals einen der Propagatoren hinzu.OTEL_PYTHON_DISTROSetzen Sie den Wert auf
aws_distro, um die ADOT-Python-Instrumentierung zu verwenden.OTEL_PYTHON_CONFIGURATORSetzen Sie den Wert auf
aws_configuration, um die ADOT-Python-Konfiguration zu verwenden.PYTHONPATHErsetzen Sie
$APP_PATHdurch den Speicherort des Arbeitsverzeichnisses der Anwendung innerhalb des Containers. Dies ist erforderlich, damit der Python-Interpreter Ihre Anwendungsmodule finden kann.DJANGO_SETTINGS_MODULENur für Django-Anwendungen erforderlich. Stellen Sie es auf den Speicherort der
settings.py-Datei Ihrer Django-Anwendung ein. Ersetzen Sie$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 Ablaufverfolgungen nicht aktivieren müssen, verwenden Sie das folgende Beispiel für eine Python-Anwendung. Wenn Sie die Protokollkorrelation aktivieren möchten, gehen Sie zum nächsten Schritt über.{ "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" } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ], "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
OTEL_RESOURCE_ATTRIBUTESeine zusätzliche Umgebungsvariableaws.log.group.namesfür die Protokollgruppen Ihrer Anwendung fest. Auf diese Weise können die Ablaufverfolgungen und Metriken aus Ihrer Anwendung mit den relevanten Protokolleinträgen aus diesen Protokollgruppen korreliert werden. Ersetzen Sie für diese Variable$YOUR_APPLICATION_LOG_GROUPdurch 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 Metrik zur Protokollierungskorrelation aktivieren. Um die Korrelation zwischen Ablaufverfolgung und Protokoll zu aktivieren, müssen Sie auch die Protokollierungskonfiguration in Ihrer Anwendung ändern. Weitere Informationen finden Sie unter Die Korrelation von Ablaufverfolgung zu Protokollen aktivieren.Im Folgenden wird ein Beispiel gezeigt. Um die Protokollkorrelation zu aktivieren, verwenden Sie dieses Beispiel, wenn Sie das Volume
opentelemetry-auto-instrumentation-pythonmounten, 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" } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-python", "containerPath": "/otel-auto-instrumentation-python", "readOnly": false } ] }
- .NET
-
So instrumentieren Sie Ihre Anwendung in Amazon ECS mit dem CloudWatch-Agenten
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
initan die Aufgabendefinition Ihrer Anwendung an. Ersetzen Sie$IMAGEdurch das neueste Image aus dem Amazon-ECR-Image-Repository von AWS Distro für OpenTelemetry. Verwenden Sie Folgendes für eine Linux-Container-Instance.
{ "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 Folgendes für eine Windows-Server-Container-Instance.
{ "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 auf dem
init-Container hinzu, um sicherzustellen, dass dieser 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 Autoinstrumentations-Agenten AWS Distro für OpenTelemetry für .NET
verwenden. Umgebungsvariable Einstellen zur Aktivierung von Application Signals OTEL_RESOURCE_ATTRIBUTESGeben Sie die folgende Information als Schlüssel-Wert-Paare an:
service.namelegt 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 vonUnknownServiceverwendet.deployment.environmentlegt 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 das nicht angeben, wird der Standardwertgeneric:defaultverwendet.
Dieser Attributschlüssel wird nur von Application Signals verwendet und wird in X-Ray-Trace-Anmerkungen und CloudWatch-Metrikdimensionen umgewandelt.
OTEL_AWS_APPLICATION_SIGNALS_ENABLEDSetzen Sie den Wert auf
true, damit Ihr Container beginnt, X-Ray-Ablaufverfolgungen und CloudWatch-Metriken an Application Signals zu senden.OTEL_METRICS_EXPORTERStellen Sie auf
noneein, um andere Metrik-Exportprogramme zu deaktivieren.OTEL_LOGS_EXPORTERSetzen Sie den Wert auf
none, um andere Protokoll-Exportprogramme zu deaktivieren.OTEL_EXPORTER_OTLP_PROTOCOLSetzen Sie den Wert auf
http/protobuf, um Metriken und Ablaufverfolgungen über HTTP an Application Signals zu senden.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINTSendet Metriken an den CloudWatch-Daemon-Container.
Stellen Sie dies für Anwendungen, die im
host-Modus ausgeführt werden, aufhttp://localhost:4316/v1/metricsein.Für Anwendungen, die im
bridge- oderawsvpc-Modus ausgeführt werden, setzen Sie diesen Wert auf http://CW_CONTAINER_IP:4316/v1/metrics,, wobeiCW_CONTAINER_IPdie private IP-Adresse der EC2-Container-Instance ist. Sie können diese Adresse vom Instance Metadata Service (IMDS) abrufen.
OTEL_EXPORTER_OTLP_ENDPOINTSendet Ablaufverfolgungen 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- oderawsvpc-Modus ausgeführt werden, setzen Sie diesen Wert auf http://CW_CONTAINER_IP:4316, wobeiCW_CONTAINER_IPdie private IP-Adresse der EC2-Container-Instance ist. Sie können diese Adresse vom Instance Metadata Service (IMDS) abrufen.
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTSendet Ablaufverfolgungen 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- oderawsvpc-Modus ausgeführt werden, setzen Sie diesen Wert auf http://CW_CONTAINER_IP:4316/v1/traces, wobeiCW_CONTAINER_IPdie private IP-Adresse der EC2-Container-Instance ist. Sie können diese Adresse vom Instance Metadata Service (IMDS) abrufen.
OTEL_TRACES_SAMPLER_ARGLegt den Endpunkt des Ablaufverfolgungssamplers fest.
Für Anwendungen, die im
host-Modus ausgeführt werden, setzen Sie diesen Wert aufhttp://localhost:2000.Für Anwendungen, die im
bridge- oderawsvpc-Modus ausgeführt werden, legen Sie diesen Wert aufhttp://fest, wobeiCW_CONTAINER_IP:2000CW_CONTAINER_IPdie private IP-Adresse der EC2-Container-Instance ist. Sie können diese Adresse vom Instance Metadata Service (IMDS) abrufen.
OTEL_DOTNET_AUTO_HOMELegen Sie es auf den Installationsort der automatischen ADOT-.NET-Instrumentierung fest.
OTEL_DOTNET_AUTO_PLUGINSSetzen Sie den Wert auf
AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation, um das Application-Signals-Plugin zu aktivieren.CORECLR_ENABLE_PROFILINGSetzen Sie den Wert auf
1, um den Profiler zu aktivieren.CORECLR_PROFILERLegen Sie
{918728DD-259F-4A6A-AC2B-B85E1B658318}als CLSID des Profilers fest.CORECLR_PROFILER_PATHLegen Sie es auf den Pfad des Profilers fest.
Legen Sie es auf Linux auf
${OTEL_DOTNET_AUTO_HOME}/linux-x64/OpenTelemetry.AutoInstrumentation.Native.sofestLegen Sie es auf Windows Server auf
${OTEL_DOTNET_AUTO_HOME}/win-x64/OpenTelemetry.AutoInstrumentation.Native.dllfestDOTNET_ADDITIONAL_DEPSLegen Sie es auf den Ordnerpfad von
${OTEL_DOTNET_AUTO_HOME}/AdditionalDepsfest.DOTNET_SHARED_STORELegen Sie es auf den Ordnerpfad von
${OTEL_DOTNET_AUTO_HOME}/storefest.DOTNET_STARTUP_HOOKSLegen Sie es auf den Pfad der verwalteten Assembly
${OTEL_DOTNET_AUTO_HOME}/net/OpenTelemetry.AutoInstrumentation.StartupHook.dllfest, 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 Folgendes für Linux.{ "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=dotnet-service-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://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" } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "/otel-auto-instrumentation", "readOnly": false } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ] }Verwenden Sie Folgendes für Windows Server.
{ "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=dotnet-service-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_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 ESM aktivieren, finden Sie weitere Informationen unter Setting up a Node.js application with the ESM module format, bevor Sie mit diesen Schritten beginnen.
So instrumentieren Sie Ihre Anwendung in Amazon ECS mit dem CloudWatch-Agenten
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
initan die Aufgabendefinition Ihrer Anwendung an. Ersetzen Sie$IMAGEdurch das neueste Image aus dem Amazon-ECR-Image-Repository von AWS Distro für OpenTelemetry. { "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 eine Abhängigkeit auf dem
init-Container hinzu, um sicherzustellen, dass dieser Container fertig ist, bevor Ihr Anwendungscontainer gestartet wird."dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ]Fügen Sie die folgenden Umgebungsvariablen Ihrem Anwendungs-Container hinzu.
Umgebungsvariable Einstellen zur Aktivierung von Application Signals OTEL_RESOURCE_ATTRIBUTESGeben Sie die folgende Information als Schlüssel-Wert-Paare an:
service.namelegt 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 vonUnknownServiceverwendet.deployment.environmentlegt 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 das nicht angeben, wird der Standardwertgeneric:defaultverwendet.
Dieser Attributschlüssel wird nur von Application Signals verwendet und wird in X-Ray-Trace-Anmerkungen und CloudWatch-Metrikdimensionen umgewandelt.
(Optional) Um die Protokollkorrelation für Application Signals zu aktivieren, legen Sie eine zusätzliche Umgebungsvariable
aws.log.group.namesals Protokollgruppennamen für Ihr Anwendungsprotokoll fest. Auf diese Weise können die Ablaufverfolgungen und Metriken aus Ihrer Anwendung mit den relevanten Protokolleinträgen aus dieser Protokollgruppe korreliert werden. Ersetzen Sie für diese Variable$YOUR_APPLICATION_LOG_GROUPdurch 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 Metrik zur Protokollierungskorrelation aktivieren. Um die Korrelation zwischen Ablaufverfolgung und Protokoll zu aktivieren, müssen Sie auch die Protokollierungskonfiguration in Ihrer Anwendung ändern. Weitere Informationen finden Sie unter Die Korrelation von Ablaufverfolgung zu Protokollen aktivieren.OTEL_AWS_APPLICATION_SIGNALS_ENABLEDSetzen Sie den Wert auf
true, damit Ihr Container beginnt, X-Ray-Ablaufverfolgungen und CloudWatch-Metriken an Application Signals zu senden.OTEL_METRICS_EXPORTERStellen Sie auf
noneein, um andere Metrik-Exportprogramme zu deaktivieren.OTEL_LOGS_EXPORTERSetzen Sie den Wert auf
none, um andere Protokoll-Exportprogramme zu deaktivieren.OTEL_EXPORTER_OTLP_PROTOCOLSetzen Sie den Wert auf
http/protobuf, um Metriken und Ablaufverfolgungen über OTLP/HTTP und protobuf an Application Signals zu senden.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINTSendet Metriken an den CloudWatch-Daemon-Container.
Stellen Sie dies für Anwendungen, die im
host-Modus ausgeführt werden, aufhttp://localhost:4316/v1/metricsein.Für Anwendungen, die im
bridge- oderawsvpc-Modus ausgeführt werden, setzen Sie diesen Wert auf http://CW_CONTAINER_IP:4316/v1/metrics,, wobeiCW_CONTAINER_IPdie private IP-Adresse der EC2-Container-Instance ist. Sie können diese Adresse vom Instance Metadata Service (IMDS) abrufen.
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTSendet Ablaufverfolgungen 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- oderawsvpc-Modus ausgeführt werden, setzen Sie diesen Wert auf http://CW_CONTAINER_IP:4316/v1/traces, wobeiCW_CONTAINER_IPdie private IP-Adresse der EC2-Container-Instance ist. Sie können diese Adresse vom Instance Metadata Service (IMDS) abrufen.
OTEL_TRACES_SAMPLERSetzen Sie den Wert auf
xray, um X-Ray als den Ablaufverfolgungssampler zu verwenden.OTEL_TRACES_SAMPLER_ARGLegt den Endpunkt des Ablaufverfolgungssamplers fest.
Für Anwendungen, die im
host-Modus ausgeführt werden, setzen Sie diesen Wert aufhttp://localhost:2000.Für Anwendungen, die im
bridge- oderawsvpc-Modus ausgeführt werden, legen Sie diesen Wert aufhttp://fest, wobeiCW_CONTAINER_IP:2000CW_CONTAINER_IPdie private IP-Adresse der EC2-Container-Instance ist. Sie können diese Adresse vom Instance Metadata Service (IMDS) abrufen.
OTEL_PROPAGATORSLegen Sie
xrayals einen der Propagatoren fest.NODE_OPTIONSSetzen Sie diesen Wert auf
--require. Ersetzen SieAWS_ADOT_NODE_INSTRUMENTATION_PATHAWS_ADOT_NODE_INSTRUMENTATION_PATHdurch den Pfad, in dem die automatische Node.js-Instrumentierung von AWS-Distro für OpenTelemetry gespeichert ist. Beispiel:/otel-auto-instrumentation-node/autoinstrumentation.jsMounten Sie das Volume
opentelemetry-auto-instrumentation-node, das Sie in Schritt 1 dieses Verfahrens definiert haben. Wenn Sie die Protokollkorrelation mit Metriken und Ablaufverfolgungen nicht aktivieren müssen, verwenden Sie das folgende Beispiel für eine Node.js-Anwendung. Wenn Sie die Protokollkorrelation aktivieren möchten, gehen Sie zum nächsten Schritt über.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
OTEL_RESOURCE_ATTRIBUTESeine zusätzliche Umgebungsvariableaws.log.group.namesfür die Protokollgruppen Ihrer Anwendung fest. Auf diese Weise können die Ablaufverfolgungen und Metriken aus Ihrer Anwendung mit den relevanten Protokolleinträgen aus diesen Protokollgruppen korreliert werden. Ersetzen Sie für diese Variable$YOUR_APPLICATION_LOG_GROUPdurch 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 Metrik zur Protokollierungskorrelation aktivieren. Um die Korrelation zwischen Ablaufverfolgung und Protokoll zu aktivieren, müssen Sie auch die Protokollierungskonfiguration in Ihrer Anwendung ändern. Weitere Informationen finden Sie unter Die Korrelation von Ablaufverfolgung zu Protokollen aktivieren.Im Folgenden wird ein Beispiel gezeigt. Verwenden Sie dieses Beispiel, um die Protokollkorrelation zu aktivieren, wenn Sie das Volume
opentelemetry-auto-instrumentationmounten, 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" } ] }
Einrichtung einer Node.js-Anwendung mit dem ESM-Modulformat
Wir bieten eingeschränkte Unterstützung für Node.js-Anwendungen im ESM-Modulformat. Details hierzu finden Sie unter Bekannte Einschränkungen von Node.js mit ESM.
Für das ESM-Modulformat gilt die Verwendung des
init-Containers zum Einfügen des Instrumentierungs-SDK Node.js nicht. Um Application Signals für Node.js mit ESM zu aktivieren, überspringen Sie die Schritte 1 und 2 des vorherigen Verfahrens und gehen Sie stattdessen wie folgt vor.So aktivieren Sie Application Signals für eine Node.js-Anwendung mit ESM
Installieren Sie die relevanten Abhängigkeiten in Ihrer Node.js-Anwendung für die automatische Instrumentierung:
npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation npm install @opentelemetry/instrumentation@0.54.0Entfernen Sie in den Schritten 4 und 5 des vorherigen Verfahrens das Mounting 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: Ihre Anwendung bereitstellen
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 Application Signals– Dies ist der Beispielanwendungscontainer 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
(Optional) Schritt 7: Überwachen des Anwendungsstatus
Sobald Sie Ihre Anwendungen auf Amazon ECS aktiviert haben, können Sie den Zustand Ihrer Anwendung überwachen. Weitere Informationen finden Sie unter Den Betriebsstatus Ihrer Anwendungen mit Application Signals überwachen.