

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Verwenden Sie die Sidecar-Strategie für die Bereitstellung
<a name="CloudWatch-Application-Signals-ECS-Sidecar"></a>

## Schritt 1: Application Signals in Ihrem Konto aktivieren
<a name="CloudWatch-Application-Signals-ECS-Grant"></a>

Sie müssen Application Signals zuerst in Ihrem Konto aktivieren. Wenn Sie dies nicht getan haben, siehe [Application Signals in Ihrem Konto aktivieren](CloudWatch-Application-Signals-Enable.md).

## Schritt 2: IAM-Rollen erstellen
<a name="CloudWatch-Application-Signals-Enable-ECS-IAM"></a>

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 außerdem **CloudWatchAgentServerPolicy**so sein, wie Ihre Anwendungen sie benötigen. 

Weitere Informationen zum Erstellen von IAM-Rollen finden Sie unter [Erstellen von IAM-Rollen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html).

## Schritt 3: Bereiten Sie die CloudWatch Agentenkonfiguration vor
<a name="CloudWatch-Application-Signals-Enable-ECS-PrepareAgent"></a>

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 die 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: Kommunizieren Sie Ihre Bewerbung mit dem CloudWatch Agenten
<a name="CloudWatch-Application-Signals-Enable-ECS-Instrument"></a>

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

------
#### [ Java ]

**Um Ihre 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"
     }
   ]
   ```

1. 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 Sie es {{$REGION}} durch Ihren tatsächlichen Regionsnamen. {{$IMAGE}}Ersetzen Sie durch den Pfad zum neuesten CloudWatch Container-Image in Amazon Elastic Container Registry. Weitere Informationen finden Sie unter [cloudwatch-agent](https://gallery.ecr.aws/cloudwatch-agent/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](CloudWatch-Application-Signals-ECS-Daemon.md).

   ```
   {
     "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"
       }
     }
   }
   ```

1. Fügen Sie einen neuen Container namens `init` an die Aufgabendefinition Ihrer Anwendung an. {{$IMAGE}}Ersetzen Sie es durch das neueste Bild aus dem [AWS Distro for OpenTelemetry Amazon ECR-Image-Repository](https://gallery.ecr.aws/aws-observability/adot-autoinstrumentation-java). 

   ```
   {
     "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
       }
     ]
   }
   ```

1. 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"
     }
   ]
   ```

1. 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](https://opentelemetry.io/docs/zero-code/java/agent/) für Java verwenden.    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Signals-ECS-Sidecar.html)

1. 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 OpenTelemetry automatischen Instrumentierung zurückzuführen. Weitere Informationen zu diesem Problem finden Sie unter [Python-Autoinstrumentierungs-Einstellung von PYTHONPATH ist nicht kompatibel](https://github.com/open-telemetry/opentelemetry-operator/issues/2302).
+ Für Django-Anwendungen sind zusätzliche Konfigurationen erforderlich, die in der [ OpenTelemetry Python-Dokumentation](https://opentelemetry-python.readthedocs.io/en/latest/examples/django/README.html) 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 Sie korrekt auf Ihre Django-Einstellungen zugreifen und diese integrieren können. 
+ Wenn Sie einen WSGI-Server für Ihre Python-Anwendung verwenden, finden Sie zusätzlich zu den folgenden Schritten in diesem Abschnitt Informationen zur Verwendung von Application Signals unter [Keine Application-Signals-Daten für eine Python-Anwendung, die einen WSGI-Server verwendet](CloudWatch-Application-Signals-Enable-Troubleshoot.md#Application-Signals-troubleshoot-Python-WSGI).

**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"
     }
   ]
   ```

1. Fügen Sie eine CloudWatch Agent-Sidecar-Definition hinzu. Fügen Sie dazu einen neuen Container namens `ecs-cwagent` an die Aufgabendefinition Ihrer Anwendung an. Ersetzen Sie es {{$REGION}} durch Ihren tatsächlichen Regionsnamen. {{$IMAGE}}Ersetzen Sie durch den Pfad zum neuesten CloudWatch Container-Image in Amazon Elastic Container Registry. Weitere Informationen finden Sie unter [cloudwatch-agent](https://gallery.ecr.aws/cloudwatch-agent/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](CloudWatch-Application-Signals-ECS-Daemon.md).

   ```
   {
     "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"
       }
     }
   }
   ```

1. Fügen Sie einen neuen Container namens `init` an die Aufgabendefinition Ihrer Anwendung an. {{$IMAGE}}Ersetzen Sie es durch das neueste Bild aus dem [AWS Distro for OpenTelemetry Amazon ECR-Image-Repository](https://gallery.ecr.aws/aws-observability/adot-autoinstrumentation-python).

   ```
   {
       "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
           }
       ]
   }
   ```

1. 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"
     }
   ]
   ```

1. Fügen Sie die folgenden Umgebungsvariablen Ihrem Anwendungs-Container hinzu.    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Signals-ECS-Sidecar.html)

1. 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
       }
     ]
   }
   ```

1. (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](Application-Signals-MetricLogCorrelation.md). 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](Application-Signals-TraceLogCorrelation.md). 

   Im Folgenden wird ein -Beispiel gezeigt. Um die Protokollkorrelation zu aktivieren, verwenden Sie dieses Beispiel, wenn Sie das Volume `opentelemetry-auto-instrumentation-python`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 ]

**Um Ihre 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"
     }
   ]
   ```

1. 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 Sie es {{$REGION}} durch Ihren tatsächlichen Regionsnamen. {{$IMAGE}}Ersetzen Sie durch den Pfad zum neuesten CloudWatch Container-Image in Amazon Elastic Container Registry. Weitere Informationen finden Sie unter [cloudwatch-agent](https://gallery.ecr.aws/cloudwatch-agent/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](CloudWatch-Application-Signals-ECS-Daemon.md).

   ```
   {
     "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"
       }
     }
   }
   ```

1. Fügen Sie einen neuen Container namens `init` an die Aufgabendefinition Ihrer Anwendung an. {{$IMAGE}}Ersetzen Sie es durch das neueste Bild aus dem [AWS Distro for OpenTelemetry Amazon ECR-Image-Repository](https://gallery.ecr.aws/aws-observability/adot-autoinstrumentation-dotnet). 

   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
         }
     ]
   }
   ```

1. 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"
       }
   ]
   ```

1. 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 .NET](https://opentelemetry.io/docs/zero-code/net/) verwenden.    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Signals-ECS-Sidecar.html)

1. 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](#ECS-NodeJs-ESM), bevor Sie mit diesen Schritten beginnen.

**Um Ihre 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-node"
     }
   ]
   ```

1. 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 Sie es {{$REGION}} durch Ihren tatsächlichen Regionsnamen. {{$IMAGE}}Ersetzen Sie durch den Pfad zum neuesten CloudWatch Container-Image in Amazon Elastic Container Registry. Weitere Informationen finden Sie unter [cloudwatch-agent](https://gallery.ecr.aws/cloudwatch-agent/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](CloudWatch-Application-Signals-ECS-Daemon.md).

   ```
   {
     "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"
       }
     }
   }
   ```

1. Fügen Sie einen neuen Container namens `init` an die Aufgabendefinition Ihrer Anwendung an. {{$IMAGE}}Ersetzen Sie es durch das neueste Bild aus dem [AWS Distro for OpenTelemetry Amazon ECR-Image-Repository](https://gallery.ecr.aws/aws-observability/adot-autoinstrumentation-node). 

   ```
   {
     "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
       }
     ],
   }
   ```

1. 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"
     }
   ]
   ```

1. Fügen Sie die folgenden Umgebungsvariablen Ihrem Anwendungs-Container hinzu.    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Signals-ECS-Sidecar.html)

1. 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"
       }
     ]
   }
   ```

1. (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](Application-Signals-MetricLogCorrelation.md). 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](Application-Signals-TraceLogCorrelation.md). 

   Im Folgenden wird ein -Beispiel gezeigt. Verwenden Sie dieses Beispiel, um die Protokollkorrelation zu aktivieren, wenn Sie das Volume `opentelemetry-auto-instrumentation`mounten, das Sie in Schritt 1 dieses Verfahrens definiert haben.

   ```
   {
     "name": "{{my-app}}",
      ...
     "environment": [
       {
         "name": "OTEL_RESOURCE_ATTRIBUTES",
         "value": "aws.log.group.names={{$YOUR_APPLICATION_LOG_GROUP}},service.name={{$SVC_NAME}}"
       },
       {
         "name": "OTEL_LOGS_EXPORTER",
         "value": "none"
       },
       {
         "name": "OTEL_METRICS_EXPORTER",
         "value": "none"
       },
       {
         "name": "OTEL_EXPORTER_OTLP_PROTOCOL",
         "value": "http/protobuf"
       },
       {
         "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED",
         "value": "true"
       },
       {
         "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT",
         "value": "http://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"
       }
     ]
   }
   ```<a name="ECS-NodeJs-ESM"></a>

**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](CloudWatch-Application-Signals-supportmatrix.md#ESM-limitations).

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
   ```

1. 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
<a name="CloudWatch-Application-Signals-Enable-ECS-Deploy"></a>

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 Agent ausgeführt wird CloudWatch 
+ `{{my-app}}`– Dies ist der Beispiel-Anwendungscontainer in unserer Dokumentation. In Ihren tatsächlichen Workloads ist dieser spezielle Container möglicherweise nicht vorhanden oder er wurde möglicherweise durch Ihre eigenen Servicecontainer ersetzt.

## (Optional) Schritt 6: Überwachen des Anwendungsstatus
<a name="CloudWatch-Application-Signals-Monitor-sidecar"></a>

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](Services.md).