Verwenden Sie ein benutzerdefiniertes Setup, um Application Signals auf Amazon zu aktivieren ECS - Amazon CloudWatch

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 ein benutzerdefiniertes Setup, um Application Signals auf Amazon zu aktivieren ECS

Verwenden Sie diese Anweisungen zur benutzerdefinierten Einrichtung, um Ihre Anwendungen auf Amazon in CloudWatch Application Signals ECS zu integrieren. Sie installieren und konfigurieren den CloudWatch Agenten und die AWS Distribution für OpenTelemetry sich selbst.

Wichtig

Nur der Netzwerkmodus awsvpc wird unterstützt. EC2Sowohl der Starttyp als auch der Fargate-Starttyp werden unterstützt.

In ECS Amazon-Clustern erkennt Application Signals die Namen Ihrer Services nicht automatisch. Sie müssen Ihre Servicenamen bei der benutzerdefinierten Einrichtung angeben, und die Namen, die Sie angeben, werden auf den Dashboards von Application Signals angezeigt.

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
  1. Öffnen Sie die CloudWatch Konsole unter. https://console.aws.amazon.com/cloudwatch/

  2. Wählen Sie im Navigationsbereich Services.

  3. Wählen Sie Mit der Entdeckung Ihrer Services beginnen.

  4. 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 AWSServiceRoleForCloudWatchApplicationSignalsdienstverknüpfte 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: Kommunizieren Sie Ihre Bewerbung mit dem CloudWatch Agenten

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

Java
Um Ihre Bewerbung bei Amazon ECS mit dem CloudWatch Agenten zu instrumentieren
  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 Sidecar-Definition für Agenten hinzu. Fügen Sie dazu einen neuen Container namens ecs-cwagent an die Aufgabendefinition Ihrer Anwendung an. Ersetzen $REGION mit Ihrem tatsächlichen Regionsnamen. Ersetzen $IMAGEmit dem Pfad zum neuesten CloudWatch Container-Image in Amazon Elastic Container Registry. Weitere Informationen finden Sie unter cloudwatch-agent auf Amazon. ECR

    { "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 $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 } ] }
  4. 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 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 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 Aktivieren Sie die Metrik zur Protokollierung der Korrelation. 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 eintrue, 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

    Legt fest, dass Metriken http://localhost:4316/v1/metrics an den CloudWatch Beiwagen gesendet werden sollen.

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Auf einstellen, http://localhost:4316/v1/traces um Traces an den Beiwagen zu senden. CloudWatch

    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

  5. 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://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" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "/otel-auto-instrumentation", "readOnly": false } ] }
  6. (Optional) Um die Protokollkorrelation zu aktivieren, gehen Sie vor dem Mounten des Volumes wie folgt vor. 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 Aktivieren Sie die Metrik zur Protokollierung der Korrelation. 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": "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" } ], "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 die PYTHONPATH 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.

Um Ihre Python-Anwendung auf Amazon ECS mit dem CloudWatch Agenten zu instrumentieren
  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 Sidecar-Definition für Agenten hinzu. Fügen Sie dazu einen neuen Container namens ecs-cwagent an die Aufgabendefinition Ihrer Anwendung an. Ersetzen $REGION mit Ihrem tatsächlichen Regionsnamen. Ersetzen $IMAGEmit dem Pfad zum neuesten CloudWatch Container-Image in Amazon Elastic Container Registry. Weitere Informationen finden Sie unter cloudwatch-agent auf Amazon. ECR

    { "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 $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 } ] }
  4. 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 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 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 Aktivieren Sie die Metrik zur Protokollierung der Korrelation. 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 eintrue, 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

    Auf einstellen, http://127.0.0.1:4316/v1/metrics um Metriken an den CloudWatch Beiwagen zu senden.

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Auf einstellen, http://127.0.0.1:4316/v1/traces um Traces an den Beiwagen zu senden. CloudWatch

    OTEL_TRACES_SAMPLER

    Stellen Sie dies auf ein, xray um X-Ray als Traces-Sampler festzulegen.

    OTEL_PROPAGATORS

    xrayAls 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_PATHErsetzen 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 einsettings.py. Ersetzen$PATH_TO_SETTINGS.

  5. 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://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 } ] }
  6. (Optional) Um die Protokollkorrelation zu aktivieren, gehen Sie vor dem Mounten des Volumes wie folgt vor. 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 Aktivieren Sie die Metrik zur Protokollierung der Korrelation. 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://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 (Preview)
Um Ihre Bewerbung bei Amazon ECS mit dem CloudWatch Agenten zu instrumentieren
  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 Sidecar-Definition für Agenten hinzu. Fügen Sie dazu einen neuen Container namens ecs-cwagent an die Aufgabendefinition Ihrer Anwendung an. Ersetzen $REGION mit Ihrem tatsächlichen Regionsnamen. Ersetzen $IMAGEmit dem Pfad zum neuesten CloudWatch Container-Image in Amazon Elastic Container Registry. Weitere Informationen finden Sie unter cloudwatch-agent auf Amazon. ECR

    { "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 $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 } ] }
  4. 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" } ]
  5. 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 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 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 eintrue, 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

    Legt fest, dass Metriken http://localhost:4316/v1/metrics an den CloudWatch Beiwagen gesendet werden sollen.

    OTEL_EXPORTER_OTLP_ENDPOINT

    Auf einstellen, http://localhost:4316/ um Traces an den Beiwagen zu senden. CloudWatch

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Auf einstellen, http://localhost:4316/v1/traces um Spuren an den Beiwagen zu senden. CloudWatch

    OTEL_DOTNET_AUTO_HOME

    Stellen Sie den Installationsort von ein. ADOT NETautomatische Instrumentierung.

    OTEL_DOTNET_AUTO_PLUGINS

    Auf einstellen, AWS.OpenTelemetry.AutoInstrumentation.Plugin, AWS.OpenTelemetry.AutoInstrumentation um das Application Signals-Plugin zu aktivieren.

    CORECLR_ENABLE_PROFILING

    Wird auf gesetzt1, 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 ein ${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.

  6. 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.OpenTelemetry.AutoInstrumentation.Plugin, AWS.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://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": "/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.OpenTelemetry.AutoInstrumentation.Plugin, AWS.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://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" } ] }

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

  • ecs-cwagent

  • my-app