Verwenden Sie die Sidecar-Strategie für die Bereitstellung - Amazon CloudWatch

Verwenden Sie die Sidecar-Strategie für die Bereitstellung

Schritt 1: Application Signals in Ihrem Konto aktivieren

Sie müssen Application Signals zuerst in Ihrem Konto aktivieren. Wenn Sie das 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: Ihre Anwendung mit dem CloudWatch-Agenten instrumentieren

Der nächste Schritt besteht darin, Ihre Anwendung für CloudWatch Application Signals zu instrumentieren.

Java
So instrumentieren Sie Ihre Anwendung in Amazon ECS mit dem CloudWatch-Agenten
  1. 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" } ]
  2. Fügen Sie eine CloudWatch-Agenten-Sidecar-Definition hinzu. Fügen Sie dazu einen neuen Container namens ecs-cwagent an die Aufgabendefinition Ihrer Anwendung an. Ersetzen Sie $REGION durch Ihren tatsächlichen Regionsnamen. Ersetzen Sie $IMAGE durch den Pfad zum neuesten CloudWatch-Container-Image in der Amazon Elastic Container Registry. Weitere Informationen finden Sie unter cloudwatch-agent auf Amazon ECR.

    Wenn Sie den CloudWatch-Agenten stattdessen mit einer Daemon-Strategie aktivieren möchten, lesen Sie die Anweisungen unter Bereitstellen mit der Daemon-Strategie.

    { "name": "ecs-cwagent", "image": "$IMAGE", "essential": true, "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" } } }
  3. Fügen Sie einen neuen Container namens init an die Aufgabendefinition Ihrer Anwendung an. Ersetzen Sie $IMAGE durch 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 } ] }
  4. 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" } ]
  5. 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_ATTRIBUTES

    Geben Sie die folgende Information 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 von UnknownService 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 das nicht angeben, wird der Standardwert generic:default verwendet.

    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.names als 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_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 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_ENABLED

    Setzen Sie den Wert auf true, damit Ihr Container beginnt, X-Ray-Ablaufverfolgungen 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

    Setzen Sie den Wert auf none, um andere Protokoll-Exportprogramme zu deaktivieren.

    OTEL_EXPORTER_OTLP_PROTOCOL

    Setzen Sie den Wert auf http/protobuf, um Metriken und Ablaufverfolgungen über HTTP an Application Signals zu senden.

    OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT

    Stellen Sie auf http://localhost:4316/v1/metrics ein, um Metriken an den CloudWatch-Sidecar zu senden.

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Stellen Sie auf http://localhost:4316/v1/traces ein, um Traces an den CloudWatch-Sidecar zu senden.

    OTEL_TRACES_SAMPLER

    Setzen Sie den Wert auf xray, um X-Ray als den Ablaufverfolgungssampler zu verwenden.

    OTEL_PROPAGATORS

    Legen Sie xray als einen der Propagatoren fest.

    JAVA_TOOL_OPTIONS

    Setzen Sie den Wert auf " -javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH", um AWS_ADOT_JAVA_INSTRUMENTATION_PATH mit dem Pfad zu ersetzen, in dem der Java-Autoinstrumentations-Agent von AWS Distro für OpenTelemetry gespeichert ist. Beispiel: /otel-auto-instrumentation/javaagent.jar

  6. Mounten 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://localhost:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://localhost: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 die PYTHONPATH-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 der settings.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
  1. 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" } ]
  2. Fügen Sie eine CloudWatch-Agenten-Sidecar-Definition hinzu. Fügen Sie dazu einen neuen Container namens ecs-cwagent an die Aufgabendefinition Ihrer Anwendung an. Ersetzen Sie $REGION durch Ihren tatsächlichen Regionsnamen. Ersetzen Sie $IMAGE durch den Pfad zum neuesten CloudWatch-Container-Image in der Amazon Elastic Container Registry. Weitere Informationen finden Sie unter cloudwatch-agent auf Amazon ECR.

    Wenn Sie den CloudWatch-Agenten stattdessen mit einer Daemon-Strategie aktivieren möchten, lesen Sie die Anweisungen unter Bereitstellen mit der Daemon-Strategie.

    { "name": "ecs-cwagent", "image": "$IMAGE", "essential": true, "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" } } }
  3. Fügen Sie einen neuen Container namens init an die Aufgabendefinition Ihrer Anwendung an. Ersetzen Sie $IMAGE durch 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 } ] }
  4. 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" } ]
  5. Fügen Sie die folgenden Umgebungsvariablen Ihrem Anwendungs-Container hinzu.

    Umgebungsvariable Einstellen zur Aktivierung von Application Signals

    OTEL_RESOURCE_ATTRIBUTES

    Geben Sie die folgende Information 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 von UnknownService 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 das nicht angeben, wird der Standardwert generic:default verwendet.

    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.names als 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_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 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_ENABLED

    Setzen Sie den Wert auf true, damit Ihr Container beginnt, X-Ray-Ablaufverfolgungen 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

    Setzen Sie den Wert auf http/protobuf, damit Metriken und Ablaufverfolgungen über HTTP an CloudWatch gesendet werden.

    OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT

    Stellen Sie auf http://127.0.0.1:4316/v1/metrics ein, um Metriken an den CloudWatch-Sidecar zu senden.

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Stellen Sie auf http://127.0.0.1:4316/v1/traces ein, um Traces an den CloudWatch-Sidecar zu senden.

    OTEL_TRACES_SAMPLER

    Setzen Sie den Wert auf xray, um X-Ray als den Ablaufverfolgungssampler zu verwenden.

    OTEL_PROPAGATORS

    Fügen Sie xray als einen der Propagatoren hinzu.

    OTEL_PYTHON_DISTRO

    Setzen Sie den Wert auf aws_distro, um die ADOT-Python-Instrumentierung zu verwenden.

    OTEL_PYTHON_CONFIGURATOR

    Setzen Sie den Wert auf aws_configurator, um die ADOT-Python-Konfiguration zu verwenden.

    PYTHONPATH

    Ersetzen Sie $APP_PATH 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 settings.py-Datei Ihrer Django-Anwendung ein. Ersetzen Sie $PATH_TO_SETTINGS.

  6. 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://localhost: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://localhost:4316/v1/traces" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://localhost: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 } ] }
  7. (Optional) Um die Protokollkorrelation zu aktivieren, gehen Sie wie folgt vor, bevor Sie das Volume mounten. Legen Sie unter OTEL_RESOURCE_ATTRIBUTES eine zusätzliche Umgebungsvariable aws.log.group.names fü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_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 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://localhost: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://localhost:4316/v1/traces" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://localhost: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
So instrumentieren Sie Ihre Anwendung in Amazon ECS mit dem CloudWatch-Agenten
  1. 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" } ]
  2. Fügen Sie eine CloudWatch-Agenten-Sidecar-Definition hinzu. Fügen Sie dazu einen neuen Container namens ecs-cwagent an die Aufgabendefinition Ihrer Anwendung an. Ersetzen Sie $REGION durch Ihren tatsächlichen Regionsnamen. Ersetzen Sie $IMAGE durch den Pfad zum neuesten CloudWatch-Container-Image in der Amazon Elastic Container Registry. Weitere Informationen finden Sie unter cloudwatch-agent auf Amazon ECR.

    Wenn Sie den CloudWatch-Agenten stattdessen mit einer Daemon-Strategie aktivieren möchten, lesen Sie die Anweisungen unter Bereitstellen mit der Daemon-Strategie.

    { "name": "ecs-cwagent", "image": "$IMAGE", "essential": true, "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" } } }
  3. Fügen Sie einen neuen Container namens init an die Aufgabendefinition Ihrer Anwendung an. Ersetzen Sie $IMAGE durch 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 } ] }
  4. 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" } ]
  5. 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_ATTRIBUTES

    Geben Sie die folgende Information 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 von UnknownService 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 das nicht angeben, wird der Standardwert generic:default verwendet.

    Dieser Attributschlüssel wird nur von Application Signals verwendet und wird in X-Ray-Trace-Anmerkungen und CloudWatch-Metrikdimensionen umgewandelt.

    OTEL_AWS_APPLICATION_SIGNALS_ENABLED

    Setzen Sie den Wert auf true, damit Ihr Container beginnt, X-Ray-Ablaufverfolgungen 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

    Setzen Sie den Wert auf none, um andere Protokoll-Exportprogramme zu deaktivieren.

    OTEL_EXPORTER_OTLP_PROTOCOL

    Setzen Sie den Wert auf http/protobuf, um Metriken und Ablaufverfolgungen über HTTP an Application Signals zu senden.

    OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT

    Stellen Sie auf http://localhost:4316/v1/metrics ein, um Metriken an den CloudWatch-Sidecar zu senden.

    OTEL_EXPORTER_OTLP_ENDPOINT

    Stellen Sie auf http://localhost:4316/ ein, um Traces an den CloudWatch-Sidecar zu senden.

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Stellen Sie auf http://localhost:4316/v1/traces ein, um Traces an den CloudWatch-Sidecar zu senden.

    OTEL_DOTNET_AUTO_HOME

    Legen Sie es auf den Installationsort der automatischen ADOT.NET-Instrumentierung fest.

    OTEL_DOTNET_AUTO_PLUGINS

    Setzen Sie den Wert auf AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation, um das Application-Signals-Plugin zu aktivieren.

    CORECLR_ENABLE_PROFILING

    Setzen Sie den Wert auf 1, um den Profiler zu aktivieren.

    CORECLR_PROFILER

    Legen Sie {918728DD-259F-4A6A-AC2B-B85E1B658318} als CLSID des Profilers fest.

    CORECLR_PROFILER_PATH

    Legen Sie das auf den Pfad des Profilers fest.

    Legen Sie es auf Linux auf ${OTEL_DOTNET_AUTO_HOME}/linux-x64/OpenTelemetry.AutoInstrumentation.Native.so fest

    Legen Sie es auf Windows Server auf ${OTEL_DOTNET_AUTO_HOME}/win-x64/OpenTelemetry.AutoInstrumentation.Native.dll fest

    DOTNET_ADDITIONAL_DEPS

    Legen Sie es auf den Ordnerpfad von ${OTEL_DOTNET_AUTO_HOME}/AdditionalDeps fest.

    DOTNET_SHARED_STORE

    Legen Sie es auf den Ordnerpfad von ${OTEL_DOTNET_AUTO_HOME}/store fest.

    DOTNET_STARTUP_HOOKS

    Legen Sie es auf den Pfad der verwalteten Assembly ${OTEL_DOTNET_AUTO_HOME}/net/OpenTelemetry.AutoInstrumentation.StartupHook.dll fest, die vor dem Einstiegspunkt der Hauptanwendung ausgeführt werden soll.

  6. 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=aws-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://localhost:4316/v1/traces" }, { "name": "OTEL_EXPORTER_OTLP_ENDPOINT", "value": "http://localhost:4316" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://localhost: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 } ] }

    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://localhost:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://localhost:4316/v1/traces" }, { "name": "OTEL_EXPORTER_OTLP_ENDPOINT", "value": "http://localhost:4316" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://localhost: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
  1. 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" } ]
  2. Fügen Sie eine CloudWatch-Agenten-Sidecar-Definition hinzu. Fügen Sie dazu einen neuen Container namens ecs-cwagent an die Aufgabendefinition Ihrer Anwendung an. Ersetzen Sie $REGION durch Ihren tatsächlichen Regionsnamen. Ersetzen Sie $IMAGE durch den Pfad zum neuesten CloudWatch-Container-Image in der Amazon Elastic Container Registry. Weitere Informationen finden Sie unter cloudwatch-agent auf Amazon ECR.

    Wenn Sie den CloudWatch-Agenten stattdessen mit einer Daemon-Strategie aktivieren möchten, lesen Sie die Anweisungen unter Bereitstellen mit der Daemon-Strategie.

    { "name": "ecs-cwagent", "image": "$IMAGE", "essential": true, "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" } } }
  3. Fügen Sie einen neuen Container namens init an die Aufgabendefinition Ihrer Anwendung an. Ersetzen Sie $IMAGE durch 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 } ], }
  4. 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" } ]
  5. Fügen Sie die folgenden Umgebungsvariablen Ihrem Anwendungs-Container hinzu.

    Umgebungsvariable Einstellen zur Aktivierung von Application Signals

    OTEL_RESOURCE_ATTRIBUTES

    Geben Sie die folgende Information 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 von UnknownService 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 das nicht angeben, wird der Standardwert generic:default verwendet.

    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.names als 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_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 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_ENABLED

    Setzen Sie den Wert auf true, damit Ihr Container beginnt, X-Ray-Ablaufverfolgungen 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

    Setzen Sie den Wert auf none, um andere Protokoll-Exportprogramme zu deaktivieren.

    OTEL_EXPORTER_OTLP_PROTOCOL

    Setzen 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_ENDPOINT

    Stellen Sie auf http://localhost:4316/v1/metrics ein, um Metriken an den CloudWatch-Sidecar zu senden.

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Stellen Sie auf http://localhost:4316/v1/traces ein, um Traces an den CloudWatch-Sidecar zu senden.

    OTEL_TRACES_SAMPLER

    Setzen Sie den Wert auf xray, um X-Ray als den Ablaufverfolgungssampler zu verwenden.

    OTEL_PROPAGATORS

    Legen Sie xray als einen der Propagatoren fest.

    NODE_OPTIONS

    Setzen Sie diesen Wert auf --require AWS_ADOT_NODE_INSTRUMENTATION_PATH. Ersetzen Sie AWS_ADOT_NODE_INSTRUMENTATION_PATH durch den Pfad, in dem die automatische Node.js-Instrumentierung von AWS-Distro für OpenTelemetry gespeichert ist. Beispiel: /otel-auto-instrumentation-node/autoinstrumentation.js

  6. Mounten 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 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://localhost:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://localhost:4316/v1/traces" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://localhost: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" } ] }
  7. (Optional) Um die Protokollkorrelation zu aktivieren, gehen Sie wie folgt vor, bevor Sie das Volume mounten. Legen Sie unter OTEL_RESOURCE_ATTRIBUTES eine zusätzliche Umgebungsvariable aws.log.group.names fü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_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 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://localhost:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://localhost:4316/v1/traces" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://localhost: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 3 des vorherigen Verfahrens und gehen Sie stattdessen wie folgt vor.

So aktivieren Sie Application Signals für eine Node.js-Anwendung mit ESM
  1. 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.0
  2. Entfernen Sie in den Schritten 5 und 6 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 5: 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 drei Container sehen:

  • init– Ein erforderlicher Container für die Initialisierung von Application Signals

  • ecs-cwagent– Ein Container, in dem der CloudWatch-Agent ausgeführt wird

  • my-app– 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.

(Optional) Schritt 6: Ü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.