

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Déploiement à l’aide de la stratégie sidecar
<a name="CloudWatch-Application-Signals-ECS-Sidecar"></a>

## Étape 1 : activer Application Signals dans votre compte
<a name="CloudWatch-Application-Signals-ECS-Grant"></a>

Vous devez d’abord activer la vigie applicative dans votre compte. Si ce n’est pas déjà fait, consultez [Activation de la vigie applicative dans votre compte](CloudWatch-Application-Signals-Enable.md).

## Étape 2 : créer un rôle IAM
<a name="CloudWatch-Application-Signals-Enable-ECS-IAM"></a>

Vous devez créer un rôle IAM. Si vous avez déjà créé ce rôle, il se peut que vous deviez lui ajouter des autorisations.
+ **Rôle de tâche ECS** : les conteneurs utilisent ce rôle pour s'exécuter. Les autorisations doivent correspondre à celles dont vos applications ont besoin, en plus ** CloudWatchAgentServerPolicy**. 

Pour plus d'informations sur la création de rôles IAM, consultez [Création de rôles IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html).

## Étape 3 : Préparation de la configuration de CloudWatch l'agent
<a name="CloudWatch-Application-Signals-Enable-ECS-PrepareAgent"></a>

Préparez d’abord la configuration de l’agent avec Application Signals activé. Pour ce faire, créez un fichier local nommé `/tmp/ecs-cwagent.json`. 

```
{
  "traces": {
    "traces_collected": {
      "application_signals": {}
    }
  },
  "logs": {
    "metrics_collected": {
      "application_signals": {}
    }
  }
}
```

Chargez ensuite la configuration de l’agent dans le magasin de paramètres SSM. Pour ce faire, entrez la commande suivante : Dans le fichier, remplacez-le {{$REGION}} par le nom de votre région actuelle.

```
aws ssm put-parameter \
--name "ecs-cwagent" \
--type "String" \
--value "`cat /tmp/ecs-cwagent.json`" \
--region "{{$REGION}}"
```

## Étape 4 : Instrumentez votre candidature auprès de l' CloudWatch agent
<a name="CloudWatch-Application-Signals-Enable-ECS-Instrument"></a>

L'étape suivante consiste à instrumenter votre application pour les signaux CloudWatch d'application.

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

**Pour instrumenter votre application sur Amazon ECS avec l' CloudWatch agent**

1. Spécifiez d’abord un montage lié. Le volume sera utilisé pour partager des fichiers entre conteneurs au cours des prochaines étapes. Vous utiliserez ce montage lié plus tard dans cette procédure.

   ```
   "volumes": [
     {
       "name": "opentelemetry-auto-instrumentation"
     }
   ]
   ```

1. Ajoutez une définition de sidecar d' CloudWatch agent. Pour ce faire, ajoutez un nouveau conteneur appelé `ecs-cwagent` à la définition de tâche de votre application. {{$REGION}}Remplacez-le par le nom actuel de votre région. {{$IMAGE}}Remplacez-la par le chemin d'accès à la dernière image de CloudWatch conteneur sur Amazon Elastic Container Registry. Pour plus d’informations, consultez [cloudwatch-agent](https://gallery.ecr.aws/cloudwatch-agent/cloudwatch-agent) sur Amazon ECR.

   Si vous souhaitez plutôt activer l' CloudWatch agent avec une stratégie de démon, consultez les instructions à [Déploiement en utilisant la stratégie démon](CloudWatch-Application-Signals-ECS-Daemon.md) l'adresse.

   ```
   {
     "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. Ajoutez un nouveau conteneur `init` à la définition de tâche de votre application. {{$IMAGE}}Remplacez-la par la dernière image du référentiel d'images [AWS Distro for OpenTelemetry Amazon ECR. ](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. Ajoutez une dépendance au conteneur `init` afin de vous assurer que ce conteneur se termine avant le démarrage du conteneur de votre application.

   ```
   "dependsOn": [
     {
       "containerName": "init",
       "condition": "SUCCESS"
     }
   ]
   ```

1. Ajoutez les variables d’environnement suivantes à votre conteneur d’application. Vous devez utiliser la version 1.32.2 ou ultérieure de l'agent AWS Distro for OpenTelemetry [ auto-instrumentation pour Java. ](https://opentelemetry.io/docs/zero-code/java/agent/)    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Signals-ECS-Sidecar.html)

1. Montez le volume `opentelemetry-auto-instrumentation` que vous avez défini à l’étape 1 de cette procédure. Si vous n’avez pas besoin d’activer la corrélation des journaux avec les métriques et les suivis, utilisez l’exemple fourni pour une application Java. Si vous souhaitez activer la corrélation des journaux, reportez-vous à l’étape suivante.

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

Avant d’activer la vigie applicative pour vos applications Python, tenez compte des considérations suivantes.
+ Dans certaines applications conteneurisées, l’absence de la variable d’environnement `PYTHONPATH` peut empêcher l’application de démarrer. Pour résoudre ce problème, assurez-vous de définir la variable d'`PYTHONPATH`environnement à l'emplacement du répertoire de travail de votre application. Cela est dû à un problème connu lié à l' OpenTelemetry auto-instrumentation. Pour plus d’informations sur ce problème, consultez la section [Le paramètre d’instrumentation automatique Python pour PYTHONPATH n’est pas conforme](https://github.com/open-telemetry/opentelemetry-operator/issues/2302).
+ Pour les applications Django, des configurations supplémentaires sont requises, qui sont décrites dans la documentation [ OpenTelemetry ](https://opentelemetry-python.readthedocs.io/en/latest/examples/django/README.html) Python.
  + Utilisez le paramètre `--noreload` pour empêcher le rechargement automatique.
  + Définissez la variable d'`DJANGO_SETTINGS_MODULE`environnement sur l'emplacement du `settings.py` fichier de votre application Django. Cela garantit que OpenTelemetry vous pouvez accéder correctement à vos paramètres Django et les intégrer. 
+ Si vous utilisez un serveur pré-fork (WSGI ou ASGI) tel que Gunicorn, uWSGI ou Uvicorn pour votre application Python, en plus des étapes suivantes de cette section, consultez les informations relatives au fonctionnement des signaux d'application. [Aucune donnée de signal d'application pour une application Python qui utilise un serveur pré-fork (WSGI ou ASGI)](CloudWatch-Application-Signals-Enable-Troubleshoot.md#Application-Signals-troubleshoot-Python-WSGI)

**Pour instrumenter votre application Python sur Amazon ECS à l'aide de l' CloudWatch agent**

1. Spécifiez d’abord un montage lié. Le volume sera utilisé pour partager des fichiers entre conteneurs au cours des prochaines étapes. Vous utiliserez ce montage lié plus tard dans cette procédure.

   ```
   "volumes": [
     {
       "name": "opentelemetry-auto-instrumentation-python"
     }
   ]
   ```

1. Ajoutez une définition de sidecar d' CloudWatch agent. Pour ce faire, ajoutez un nouveau conteneur appelé `ecs-cwagent` à la définition de tâche de votre application. {{$REGION}}Remplacez-le par le nom actuel de votre région. {{$IMAGE}}Remplacez-la par le chemin d'accès à la dernière image de CloudWatch conteneur sur Amazon Elastic Container Registry. Pour plus d’informations, consultez [cloudwatch-agent](https://gallery.ecr.aws/cloudwatch-agent/cloudwatch-agent) sur Amazon ECR.

   Si vous souhaitez plutôt activer l' CloudWatch agent avec une stratégie de démon, consultez les instructions à [Déploiement en utilisant la stratégie démon](CloudWatch-Application-Signals-ECS-Daemon.md) l'adresse.

   ```
   {
     "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. Ajoutez un nouveau conteneur `init` à la définition de tâche de votre application. {{$IMAGE}}Remplacez-la par la dernière image du référentiel d'images [AWS Distro for OpenTelemetry Amazon ECR. ](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. Ajoutez une dépendance au conteneur `init` afin de vous assurer que ce conteneur se termine avant le démarrage du conteneur de votre application.

   ```
   "dependsOn": [
     {
       "containerName": "init",
       "condition": "SUCCESS"
     }
   ]
   ```

1. Ajoutez les variables d’environnement suivantes à votre conteneur d’application.    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Signals-ECS-Sidecar.html)

1. Montez le volume `opentelemetry-auto-instrumentation-python` que vous avez défini à l’étape 1 de cette procédure. Si vous n’avez pas besoin d’activer la corrélation des journaux avec les métriques et les suivis, utilisez l’exemple fourni pour une application Python. Si vous souhaitez activer la corrélation des journaux, reportez-vous à l’étape suivante. 

   ```
   {
     "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. (Facultatif) Pour activer la corrélation des journaux, procédez comme suit avant de monter le volume. Dans `OTEL_RESOURCE_ATTRIBUTES`, définissez une variable d’environnement supplémentaire `aws.log.group.names` pour les groupes de journaux de votre application. Cela permet de corréler les suivis et les métriques de votre application avec les entrées de journaux correspondantes. Pour cette variable, remplacez {{$YOUR\_APPLICATION\_LOG\_GROUP}} par les noms des groupes de journaux de votre application. Si vous avez plusieurs groupes de journaux, vous pouvez les séparer à l’aide d’un esperluette (`&`), comme dans l’exemple suivant : `aws.log.group.names=log-group-1&log-group-2`. Pour activer la corrélation entre les métriques et les journaux, la définition de cette variable suffit. Pour de plus amples informations, veuillez consulter [Activation de la corrélation entre métriques et journaux](Application-Signals-MetricLogCorrelation.md). Pour activer la corrélation entre les suivis et les journaux, vous devez également modifier la configuration de journalisation de votre application. Pour de plus amples informations, veuillez consulter [Activation de la corrélation entre suivis et journaux](Application-Signals-TraceLogCorrelation.md). 

   Voici un exemple. Pour activer la corrélation des journaux, utilisez cet exemple lorsque vous montez le volume `opentelemetry-auto-instrumentation-python` que vous avez défini à l’étape 1 de cette procédure.

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

**Pour instrumenter votre application sur Amazon ECS avec l' CloudWatch agent**

1. Spécifiez d’abord un montage lié. Le volume sera utilisé pour partager des fichiers entre conteneurs au cours des prochaines étapes. Vous utiliserez ce montage lié plus tard dans cette procédure.

   ```
   "volumes": [
     {
       "name": "opentelemetry-auto-instrumentation"
     }
   ]
   ```

1. Ajoutez une définition de sidecar d' CloudWatch agent. Pour ce faire, ajoutez un nouveau conteneur appelé `ecs-cwagent` à la définition de tâche de votre application. {{$REGION}}Remplacez-le par le nom actuel de votre région. {{$IMAGE}}Remplacez-la par le chemin d'accès à la dernière image de CloudWatch conteneur sur Amazon Elastic Container Registry. Pour plus d’informations, consultez [cloudwatch-agent](https://gallery.ecr.aws/cloudwatch-agent/cloudwatch-agent) sur Amazon ECR.

   Si vous souhaitez plutôt activer l' CloudWatch agent avec une stratégie de démon, consultez les instructions à [Déploiement en utilisant la stratégie démon](CloudWatch-Application-Signals-ECS-Daemon.md) l'adresse.

   ```
   {
     "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. Ajoutez un nouveau conteneur `init` à la définition de tâche de votre application. {{$IMAGE}}Remplacez-la par la dernière image du référentiel d'images [AWS Distro for OpenTelemetry Amazon ECR. ](https://gallery.ecr.aws/aws-observability/adot-autoinstrumentation-dotnet) 

   Pour une instance de conteneur Linux, utilisez ce qui suit.

   ```
   {
     "name": "init",
     "image": "{{$IMAGE}}",
     "essential": false,
     "command": [
         "cp",
         "-a",
         "autoinstrumentation/.",
         "/otel-auto-instrumentation"
     ],
     "mountPoints": [
         {
             "sourceVolume": "opentelemetry-auto-instrumentation",
             "containerPath": "/otel-auto-instrumentation",
             "readOnly": false
         }
     ]
   }
   ```

   Pour une instance de conteneur Windows Server, utilisez ce qui suit.

   ```
   {
     "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. Ajoutez une dépendance au conteneur `init` afin de vous assurer que ce conteneur se termine avant le démarrage du conteneur de votre application.

   ```
   "dependsOn": [
       {
           "containerName": "init",
           "condition": "SUCCESS"
       }
   ]
   ```

1. Ajoutez les variables d’environnement suivantes à votre conteneur d’application. Vous devez utiliser la version 1.1.0 ou ultérieure de l'agent AWS Distro for OpenTelemetry [ auto-instrumentation pour .NET. ](https://opentelemetry.io/docs/zero-code/net/)    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Signals-ECS-Sidecar.html)

1. Montez le volume `opentelemetry-auto-instrumentation` que vous avez défini à l’étape 1 de cette procédure. Pour Linux, utilisez ce qui suit.

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

   Pour Windows Server, utilisez ce qui suit.

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

**Note**  
Si vous activez les signaux d'application pour une Node.js application avec ESM, référez-vous à ces étapes [Setting up a Node.js application with the ESM module format](#ECS-NodeJs-ESM) avant de commencer.

**Pour instrumenter votre application sur Amazon ECS avec l' CloudWatch agent**

1. Spécifiez d’abord un montage lié. Le volume sera utilisé pour partager des fichiers entre conteneurs au cours des prochaines étapes. Vous utiliserez ce montage lié plus tard dans cette procédure.

   ```
   "volumes": [
     {
       "name": "opentelemetry-auto-instrumentation-node"
     }
   ]
   ```

1. Ajoutez une définition de sidecar d' CloudWatch agent. Pour ce faire, ajoutez un nouveau conteneur appelé `ecs-cwagent` à la définition de tâche de votre application. {{$REGION}}Remplacez-le par le nom actuel de votre région. {{$IMAGE}}Remplacez-la par le chemin d'accès à la dernière image de CloudWatch conteneur sur Amazon Elastic Container Registry. Pour plus d’informations, consultez [cloudwatch-agent](https://gallery.ecr.aws/cloudwatch-agent/cloudwatch-agent) sur Amazon ECR.

   Si vous souhaitez plutôt activer l' CloudWatch agent avec une stratégie de démon, consultez les instructions à [Déploiement en utilisant la stratégie démon](CloudWatch-Application-Signals-ECS-Daemon.md) l'adresse.

   ```
   {
     "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. Ajoutez un nouveau conteneur `init` à la définition de tâche de votre application. {{$IMAGE}}Remplacez-la par la dernière image du référentiel d'images [AWS Distro for OpenTelemetry Amazon ECR. ](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. Ajoutez une dépendance au conteneur `init` afin de vous assurer que ce conteneur se termine avant le démarrage du conteneur de votre application.

   ```
   "dependsOn": [
     {
       "containerName": "init",
       "condition": "SUCCESS"
     }
   ]
   ```

1. Ajoutez les variables d’environnement suivantes à votre conteneur d’application.    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Signals-ECS-Sidecar.html)

1. Montez le volume `opentelemetry-auto-instrumentation` que vous avez défini à l’étape 1 de cette procédure. Si vous n'avez pas besoin d'activer la corrélation des journaux avec les métriques et les traces, utilisez l'exemple suivant pour une Node.js application. Si vous souhaitez activer la corrélation des journaux, reportez-vous à l’étape suivante.

   Dans le conteneur de votre application, ajoutez une dépendance sur le conteneur `init` afin de vous assurer que ce dernier se termine avant le démarrage de votre conteneur d’application.

   ```
   {
     "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. (Facultatif) Pour activer la corrélation des journaux, procédez comme suit avant de monter le volume. Dans `OTEL_RESOURCE_ATTRIBUTES`, définissez une variable d’environnement supplémentaire `aws.log.group.names` pour les groupes de journaux de votre application. Cela permet de corréler les suivis et les métriques de votre application avec les entrées de journaux correspondantes. Pour cette variable, remplacez {{$YOUR\_APPLICATION\_LOG\_GROUP}} par les noms des groupes de journaux de votre application. Si vous avez plusieurs groupes de journaux, vous pouvez les séparer à l’aide d’un esperluette (`&`), comme dans l’exemple suivant : `aws.log.group.names=log-group-1&log-group-2`. Pour activer la corrélation entre les métriques et les journaux, la définition de cette variable suffit. Pour de plus amples informations, veuillez consulter [Activation de la corrélation entre métriques et journaux](Application-Signals-MetricLogCorrelation.md). Pour activer la corrélation entre les suivis et les journaux, vous devez également modifier la configuration de journalisation de votre application. Pour de plus amples informations, veuillez consulter [Activation de la corrélation entre suivis et journaux](Application-Signals-TraceLogCorrelation.md). 

   Voici un exemple. Utilisez cet exemple pour activer la corrélation des journaux lors du montage du volume `opentelemetry-auto-instrumentation` que vous avez défini à l’étape 1 de cette procédure.

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

**Configuration d'une Node.js application au format de module ESM **

Nous fournissons un support limité pour les Node.js applications utilisant le format de module ESM. Pour en savoir plus, consultez [Limitations connues de Node.js l'ESM](CloudWatch-Application-Signals-supportmatrix.md#ESM-limitations).

Pour le format du module ESM, l'utilisation du `init` conteneur pour injecter le SDK Node.js d'instrumentation ne s'applique pas. Pour activer les signaux d'application Node.js avec ESM, ignorez les étapes 1 et 3 de la procédure précédente et procédez comme suit.

**Pour activer les signaux d'application pour une Node.js application avec ESM**

1. Installez les dépendances pertinentes dans votre Node.js application pour l'auto-instrumentation :

   ```
   npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation
   npm install @opentelemetry/instrumentation@0.54.0
   ```

1. Dans les étapes 5 et 6 de la procédure précédente, supprimez le montage du volume `opentelemetry-auto-instrumentation-node` :

   ```
    "mountPoints": [
       {
           "sourceVolume": "opentelemetry-auto-instrumentation-node",
           "containerPath": "/otel-auto-instrumentation-node",
           "readOnly": false
       }
    ]
   ```

   Remplacez les options du nœud par les options suivantes.

   ```
   {
       "name": "NODE_OPTIONS",
       "value": "--import @aws/aws-distro-opentelemetry-node-autoinstrumentation/register --experimental-loader=@opentelemetry/instrumentation/hook.mjs"
   }
   ```

------

## Étape 5 : déployer votre application
<a name="CloudWatch-Application-Signals-Enable-ECS-Deploy"></a>

Créez une nouvelle révision de votre définition de tâche et déployez-la dans votre cluster d’applications. Vous devriez voir trois conteneurs dans la tâche nouvellement créée :
+ `init` : conteneur requis pour l’initialisation de la vigie applicative.
+ `ecs-cwagent`— Un conteneur qui fait fonctionner l' CloudWatch agent
+ `{{my-app}}` : exemple de conteneur d’application dans notre documentation. Dans vos charges de travail réelles, ce conteneur spécifique n’existe peut-être pas ou peut être remplacé par vos propres conteneurs de service.

## (Facultatif) Étape 6 : surveiller l’état de votre application
<a name="CloudWatch-Application-Signals-Monitor-sidecar"></a>

Une fois que vous avez activé vos applications sur Amazon ECS, vous pouvez surveiller l'état de santé de vos applications. Pour de plus amples informations, veuillez consulter [Surveillez l’état de fonctionnement de vos applications avec Application Signals](Services.md).