

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.

# Configuration de Container Insights sur Amazon ECS
<a name="deploy-container-insights-ECS"></a>

Vous pouvez utiliser l'une des options suivantes ou les deux pour activer Container Insights sur les clusters Amazon ECS :
+ Utilisez le AWS Management Console ou AWS CLI pour commencer à collecter des métriques au niveau du cluster, au niveau des tâches et au niveau du service.
+ Déployez l' CloudWatch agent en tant que service daemon pour commencer à collecter des métriques au niveau de l'instance sur les clusters hébergés sur des instances Amazon EC2.

**Topics**
+ [Configuration de Container Insights sur Amazon ECS](deploy-container-insights-ECS-cluster.md)
+ [Configuration de Container Insights sur Amazon ECS à l'aide de AWS Distro pour OpenTelemetry](deploy-container-insights-ECS-adot.md)
+ [Déploiement de l' CloudWatch agent pour collecter des métriques au niveau de l'instance EC2 sur Amazon ECS](deploy-container-insights-ECS-instancelevel.md)
+ [Déploiement de la AWS distribution pour collecter des métriques OpenTelemetry au niveau de l'instance EC2 sur des clusters Amazon ECS](deploy-container-insights-ECS-OTEL.md)
+ [Configurer FireLens pour envoyer des journaux à CloudWatch Logs](deploy-container-insights-ECS-logs.md)

# Configuration de Container Insights sur Amazon ECS
<a name="deploy-container-insights-ECS-cluster"></a>

Vous pouvez configurer Container Insights avec observabilité améliorée ou Container Insights sur des clusters Amazon ECS nouveaux et existants à l’aide de la console Amazon ECS ou de l’ AWS CLI. Container Insights collecte des métriques au niveau du cluster, des tâches et des services. Container Insights avec observabilité améliorée fournit des dimensions et des métriques supplémentaires, vous permettant d’approfondir la visibilité au niveau des conteneurs. 

Si vous utilisez Amazon ECS sur une instance Amazon EC2, veuillez lancer cette instance à l’aide d’une AMI qui inclut l’agent Amazon ECS version 1.29 ou ultérieure. Pour plus d’informations sur la mise à jour de la version de votre agent, consultez [Mise à jour de l’agent du conteneur Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html).

**Note**  
Si la AWS KMS clé gérée par le client que vous utilisez pour vos métriques Amazon ECS Container Insights n'est pas déjà configurée pour fonctionner CloudWatch, vous devez mettre à jour la politique relative aux clés pour autoriser les journaux chiffrés dans CloudWatch les journaux. Vous devez également associer votre propre AWS KMS clé au groupe de connexion`/aws/ecs/containerinsights/ClusterName/performance`. Pour plus d'informations, voir [Chiffrer les données des journaux dans les CloudWatch journaux à l'aide AWS Key Management Service](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html) de.

Nous vous recommandons d’utiliser Container Insights avec observabilité améliorée à la place de Container Insights, car il fournit une visibilité détaillée de votre environnement de conteneurs, réduisant ainsi le délai moyen de résolution.

## Configurer Container Insights avec une observabilité améliorée
<a name="set-container-insights-ECS-cluster-enhanced"></a>

Vous pouvez activer Container Insights avec une observabilité améliorée à l’aide de la console Amazon ECS ou d’ AWS CLI. 

------
#### [ AWS CLI ]

Utilisez la commande suivante pour activer Container Insights avec observabilité améliorée.

 Définissez le paramètre de compte `containerInsights` sur `enhanced`

```
aws ecs put-account-setting --name containerInsights --value enhanced
```

Exemple de sortie

```
{
    "setting": {
        "name": "containerInsights",
        "value": "enhanced",
        "principalArn": "arn:aws:iam::123456789012:johndoe",
         "type": user
    }
}
```

**Note**  
Par défaut, `put-account-setting` s’applique uniquement à l’utilisateur actuellement authentifié. Pour activer le paramètre à l’échelle du compte pour tous les utilisateurs et tous les rôles, utilisez l’utilisateur racine comme dans l’exemple suivant.  

```
aws ecs put-account-setting --name containerInsights --value enhanced --principal-arn arn:aws:iam::accountID:root
```

Une fois que vous avez défini ce paramètre de compte, tous les nouveaux clusters utilisent automatiquement Container Insights avec observabilité améliorée. Utilisez la commande `update-cluster-settings` pour ajouter Container Insights avec une observabilité améliorée au cluster existant ou pour mettre à niveau les clusters qui utilisent actuellement Container Insights vers Container Insights avec une observabilité améliorée.

```
aws ecs update-cluster-settings --cluster cluster-name --settings name=containerInsights,value=enhanced
```

------
#### [ Amazon ECS console ]

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Dans la barre de navigation en haut de l'écran, sélectionnez la région pour laquelle vous souhaitez afficher vos paramètres de compte. 

1. Dans la page de navigation, choisissez **Account Settings** (Paramètres du compte).

1. Choisissez **Mettre à jour**.

1. Pour utiliser Container Insights avec observabilité améliorée, sélectionnez **Container Insights avec observabilité améliorée**.

1. Sélectionnez **Enregistrer les modifications**.

1. Dans l'écran de confirmation, choisissez **Confirm** (Confirmer) pour enregistrer la sélection.

Une fois ce paramètre défini, tous les nouveaux clusters utilisent automatiquement Container Insights avec une observabilité améliorée. Vous pouvez ajouter Container Insights avec une observabilité améliorée aux clusters existants ou mettre à niveau les clusters qui utilisent actuellement Container Insights vers Container Insights avec une observabilité améliorée. Pour plus d’informations, consultez [Mise à jour d’un cluster Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-cluster-v2.html) dans le *Guide du développeur Amazon Elastic Container Service*.

------

## Configurer Container Insights
<a name="set-container-insights-ECS-cluster"></a>

Vous pouvez activer Container Insights à l’aide de la console Amazon ECS ou de l’ AWS CLI. 

------
#### [ AWS CLI ]

Pour utiliser Container Insights, définissez le paramètre du compte `container Insights` sur `enabled`. Utilisez la commande suivante pour activer Container Insights.

```
aws ecs put-account-setting --name containerInsights --value enabled
```

Exemple de sortie

```
{
    "setting": {
        "name": "container Insights",
        "value": "enabled",
        "principalArn": "arn:aws:iam::123456789012:johndoe",
         "type": user
    }
}
```

Lorsque vous définissez le paramètre de compte `container Insights` sur `enabled`, tous les nouveaux clusters ont Container Insights activé par défaut. Utilisez la commande `update-cluster-settings` pour ajouter Container Insights à un cluster existant.

```
aws ecs update-cluster-settings --cluster cluster-name --settings name=containerInsights,value=enabled
```

------
#### [ Amazon ECS console ]

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Dans la barre de navigation en haut de l'écran, sélectionnez la région pour laquelle vous souhaitez afficher vos paramètres de compte. 

1. Dans la page de navigation, choisissez **Account Settings** (Paramètres du compte).

1. Choisissez **Mettre à jour**.

1. Pour utiliser Container Insights, choisissez **Container Insights**.

1. Sélectionnez **Enregistrer les modifications**.

1. Dans l'écran de confirmation, choisissez **Confirm** (Confirmer) pour enregistrer la sélection.

Une fois cette configuration effectuée, tous les nouveaux clusters utilisent automatiquement Container Insights. Mettez à jour les clusters existants pour ajouter Container Insights. Pour plus d’informations, consultez [Mise à jour d’un cluster Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-cluster-v2.html) dans le *Guide du développeur Amazon Elastic Container Service*.

------

# Configuration de Container Insights sur Amazon ECS à l'aide de AWS Distro pour OpenTelemetry
<a name="deploy-container-insights-ECS-adot"></a>

Utilisez cette section si vous souhaitez utiliser AWS Distro pour OpenTelemetry configurer CloudWatch Container Insights sur un cluster Amazon ECS. [Pour plus d'informations sur AWS Distro for Open Telemetry, voir AWS Distro for. OpenTelemetry](https://aws.amazon.com/otel/) 

Cette procédure suppose que vous avez déjà un cluster exécutant Amazon ECS. Pour plus d'informations sur l'utilisation de AWS Distro pour la télémétrie ouverte avec Amazon ECS et sur la configuration d'un cluster Amazon ECS à cette fin, consultez [Configuration de AWS Distro pour Collector OpenTelemetry dans Amazon](https://aws-otel.github.io/docs/setup/ecs) Elastic Container Service.

## Étape 1 : Création d'un rôle de tâche
<a name="deploy-container-insights-ECS-adot-CreateTaskRole"></a>

La première étape consiste à créer un rôle de tâche dans le cluster que le AWS OpenTelemetry Collector utilisera.

**Pour créer un rôle de tâche pour AWS Distro for OpenTelemetry**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le panneau de navigation, choisissez **Politiques**, puis **Créer une politique**.

1. Choisissez l'onglet **JSON** et copiez la politique suivante :

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents",
                   "logs:CreateLogGroup",
                   "logs:CreateLogStream",
                   "logs:DescribeLogStreams",
                   "logs:DescribeLogGroups",
                   "ssm:GetParameters"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Choisissez **Examiner une politique**.

1. Pour Name (Nom), saisissez **AWSDistroOpenTelemetryPolicy**, puis choisissez **Create policy (Créer une politique)**.

1. Dans le panneau de navigation, choisissez **Roles (Rôles)**, puis **Create role (Créer un rôle)**.

1. Dans la liste des services, choisissez **Elastic Container Service**.

1. Plus bas sur la page, choisissez **Elastic Container Service Task (Tâche Elastic Container Service)**, puis choisissez **Next: Permissions (Suivant : Autorisations)**.

1. Dans la liste des politiques, recherchez **AWSDistroOpenTelemetryPolicy**.

1. Cochez la case à côté de **AWSDistroOpenTelemetryPolicy**.

1. Sélectionnez **Next: Tags (Suivant : Balises)**, puis **Next: Review (Suivant : Vérification).**

1. Pour **Role name (Nom du rôle)**, saisissez **AWSOpenTelemetryTaskRole**, puis choisissez **Create role (Créer un rôle)**.

## Étape 2 : Créer un rôle d'exécution de tâche
<a name="deploy-container-insights-ECS-adot-CreateTaskExecutionRole"></a>

L'étape suivante consiste à créer un rôle d'exécution de tâche pour le AWS OpenTelemetry collecteur.

**Pour créer un rôle d'exécution de tâches pour AWS Distro for OpenTelemetry**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le panneau de navigation, choisissez **Roles (Rôles)**, puis **Create role (Créer un rôle)**.

1. Dans la liste des services, choisissez **Elastic Container Service**.

1. Plus bas sur la page, choisissez **Elastic Container Service Task (Tâche Elastic Container Service)**, puis choisissez **Next: Permissions (Suivant : Autorisations)**.

1. Dans la liste des politiques, recherchez **Amazon**, ECSTask ExecutionRolePolicy puis cochez la case à côté d'**Amazon ECSTask ExecutionRolePolicy**.

1. Dans la liste des politiques, recherchez **CloudWatchLogsFullAccess**puis cochez la case à côté de **CloudWatchLogsFullAccess**.

1. Dans la liste des politiques, recherchez **Amazon**, SSMRead OnlyAccess puis cochez la case à côté d'**Amazon SSMRead OnlyAccess**.

1. Sélectionnez **Next: Tags (Suivant : Balises)**, puis **Next: Review (Suivant : Vérification).**

1. Pour **Role name (Nom du rôle)**, saisissez **AWSOpenTelemetryTaskExecutionRole**, puis choisissez **Create role (Créer un rôle)**.

## Étape 3 : Créer une définition de tâche
<a name="deploy-container-insights-ECS-adot-CreateTaskDefinition"></a>

L'étape suivante consiste à créer une définition de tâche.

**Pour créer une définition de tâche pour AWS Distro for OpenTelemetry**

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Dans le panneau de navigation, choisissez **Task definitions** (Définition des tâches)

1. Choisissez **Create new task definition** (Créer une nouvelle définition de tâche), puis **Create new task definition** (Créer une nouvelle définition de tâche).

1. Pour **Task definition family** (Famille de définition de tâche), spécifiez un nom unique pour la définition de tâche.

1. Configurez vos conteneurs, puis choisissez **Suivant**.

1. Sous **Métriques et journalisation**, sélectionnez **Utiliser la collecte de métriques**.

1. Choisissez **Suivant**.

1. Choisissez **Créer**.

Pour plus d'informations sur l'utilisation du AWS OpenTelemetry collecteur avec Amazon ECS, consultez [Configuration de AWS Distro pour OpenTelemetry Collector dans Amazon Elastic Container Service](https://aws-otel.github.io/docs/setup/ecs).

## Étape 4 : Exécuter la tâche
<a name="deploy-container-insights-ECS-adot-CreateTaskDefinition"></a>

La dernière étape consiste à exécuter la tâche que vous avez créée.

**Pour exécuter la tâche pour AWS Distro for OpenTelemetry**

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Dans le panneau de navigation de gauche, choisissez **Task Definitions (Définitions de tâche)** puis sélectionnez la tâche que vous venez de créer.

1. Choisissez **Actions**, **Déployer**, **Exécuter la tâche**. 

1. Choisissez **Deploy** (Déploiement), **Run task** (Exécution de tâche).

1. Dans la section **Options de calcul**, dans **Cluster existant**, sélectionnez le cluster.

1. Choisissez **Créer**.

1. Ensuite, vous pouvez vérifier les nouvelles mesures dans la CloudWatch console.

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans le volet de navigation de gauche, choisissez **Métriques**.

   Vous devriez voir un espace de ContainerInsights noms **ECS/**. Choisissez cet espace de noms, vous devriez voir huit métriques.

# Déploiement de l' CloudWatch agent pour collecter des métriques au niveau de l'instance EC2 sur Amazon ECS
<a name="deploy-container-insights-ECS-instancelevel"></a>

Pour déployer l' CloudWatch agent afin de collecter des métriques au niveau de l'instance à partir de clusters Amazon ECS hébergés sur une instance EC2, utilisez une configuration de démarrage rapide avec une configuration par défaut ou installez l'agent manuellement pour pouvoir le personnaliser.

Les deux méthodes nécessitent que vous disposiez déjà d'au moins un cluster Amazon ECS déployé avec un type de lancement EC2 et que le conteneur de l' CloudWatch agent ait accès au service de métadonnées d'instance Amazon EC2 (IMDS). Pour plus d'informations sur IMDS, consultez [Métadonnées d'instance et données utilisateur](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html).

Ces méthodes supposent également que vous avez AWS CLI installé le. En outre, pour exécuter les commandes décrites dans les procédures suivantes, vous devez être connecté à un compte ou à un rôle soumis aux politiques **IAMFullAccess** et **AmazonECS\$1 FullAccess**.

**Important**  
Lorsque vous définissez le conteneur d' CloudWatch agents dans votre définition de tâche, définissez`essential: false`. Cela empêche l'arrêt de l'ensemble du service Amazon ECS en cas de défaillance du conteneur d' CloudWatch agents. Les autres conteneurs d’applications critiques continueront de fonctionner même si l’agent est temporairement indisponible.

**Topics**
+ [Configuration rapide à l'aide de CloudFormation](#deploy-container-insights-ECS-instancelevel-quickstart)
+ [Configuration manuelle et personnalisée](#deploy-container-insights-ECS-instancelevel-manual)

## Configuration rapide à l'aide de CloudFormation
<a name="deploy-container-insights-ECS-instancelevel-quickstart"></a>

Pour utiliser la configuration rapide, entrez la commande suivante à utiliser CloudFormation pour installer l'agent. Remplacez *cluster-name* et *cluster-region* par le nom et la région de votre cluster Amazon ECS.

**Cette commande crée les rôles Role et **CWAgentECSTaskCWAgentECSExecutionRole** IAM.** Si ces rôles existent déjà dans votre compte, utilisez `ParameterKey=CreateIAMRoles,ParameterValue=False` plutôt que `ParameterKey=CreateIAMRoles,ParameterValue=True` lorsque vous entrez la commande. Sinon, la commande échouera.

```
ClusterName=cluster-name
Region=cluster-region
curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/daemon-service/cwagent-ecs-instance-metric/cloudformation-quickstart/cwagent-ecs-instance-metric-cfn.json
aws cloudformation create-stack --stack-name CWAgentECS-${ClusterName}-${Region} \
    --template-body file://cwagent-ecs-instance-metric-cfn.json \
    --parameters ParameterKey=ClusterName,ParameterValue=${ClusterName} \
                 ParameterKey=CreateIAMRoles,ParameterValue=True \
    --capabilities CAPABILITY_NAMED_IAM \
    --region ${Region}
```

**(Alternative) Utilisation de vos propres rôles IAM**

Si vous souhaitez utiliser votre propre rôle de tâche ECS personnalisé et votre rôle d'exécution de tâche ECS au lieu des rôles **CWAgentECSTaskCWAgentECSExecutionRôle** **et Rôle**, assurez-vous d'abord que le rôle à utiliser en tant que rôle de tâche ECS est **CloudWatchAgentServerPolicy**attaché. Assurez-vous également que le rôle à utiliser comme rôle d'exécution de tâches ECS est associé à la fois aux ECSTask ExecutionRolePolicy politiques **Amazon **CloudWatchAgentServerPolicy**et aux politiques Amazon**. Entrez ensuite la commande suivante. Dans la commande, remplacez *task-role-arn* par l'ARN de votre rôle de tâche ECS personnalisé et remplacez *execution-role-arn* par l'ARN de votre rôle d'exécution de tâche ECS personnalisé.

```
ClusterName=cluster-name
Region=cluster-region
TaskRoleArn=task-role-arn
ExecutionRoleArn=execution-role-arn
curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/daemon-service/cwagent-ecs-instance-metric/cloudformation-quickstart/cwagent-ecs-instance-metric-cfn.json
aws cloudformation create-stack --stack-name CWAgentECS-${ClusterName}-${Region} \
    --template-body file://cwagent-ecs-instance-metric-cfn.json \
    --parameters ParameterKey=ClusterName,ParameterValue=${ClusterName} \
                 ParameterKey=TaskRoleArn,ParameterValue=${TaskRoleArn} \
                 ParameterKey=ExecutionRoleArn,ParameterValue=${ExecutionRoleArn} \
    --capabilities CAPABILITY_NAMED_IAM \
    --region ${Region}
```

**Dépannage de la configuration rapide**

Pour vérifier l'état de la CloudFormation pile, entrez la commande suivante.

```
ClusterName=cluster-name
Region=cluster-region
aws cloudformation describe-stacks --stack-name CWAgentECS-$ClusterName-$Region --region $Region
```

Si le `StackStatus` ne correspond pas à `CREATE_COMPLETE` ou `CREATE_IN_PROGRESS`, vérifiez les événements de la pile pour trouver l'erreur. Entrez la commande suivante.

```
ClusterName=cluster-name
Region=cluster-region
aws cloudformation describe-stack-events --stack-name CWAgentECS-$ClusterName-$Region --region $Region
```

Pour vérifier l'état du service de démon `cwagent`, saisissez la commande suivante. Dans la sortie, vous devriez voir que `runningCount` est égal à `desiredCount` dans la section `deployment`. Si elle n'est pas égale, vérifiez la section `failures` dans la sortie.

```
ClusterName=cluster-name
Region=cluster-region
aws ecs describe-services --services cwagent-daemon-service --cluster $ClusterName --region $Region
```

Vous pouvez également utiliser la console CloudWatch Logs pour consulter le journal de l'agent. Recherchez le groupe de ecs-cwagent-daemon-service journaux **/ecs/**.

**Supprimer la CloudFormation pile pour l' CloudWatch agent**

Si vous devez supprimer la CloudFormation pile, entrez la commande suivante.

```
ClusterName=cluster-name
Region=cluster-region
aws cloudformation delete-stack --stack-name CWAgentECS-${ClusterName}-${Region} --region ${Region}
```

## Configuration manuelle et personnalisée
<a name="deploy-container-insights-ECS-instancelevel-manual"></a>

Suivez les étapes décrites dans cette section pour déployer manuellement l' CloudWatch agent afin de collecter des métriques au niveau de l'instance à partir de vos clusters Amazon ECS hébergés sur des instances EC2.

### Rôles et politiques IAM nécessaires
<a name="deploy-container-insights-ECS-instancelevel-IAMRoles"></a>

Deux rôles IAM sont requis. Vous devez les créer s'ils n'existent pas déjà. Pour plus d'informations sur ces rôles, consultez [Rôles IAM des tâches](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) et [Rôle d'exécution des tâches Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html).
+ *Rôle de tâche ECS*, utilisé par l' CloudWatch agent pour publier des métriques. Si ce rôle existe déjà, vous devez vous assurer que la politique `CloudWatchAgentServerPolicy` est attachée.
+ *Rôle d'exécution de tâche ECS*, utilisé par l'agent Amazon ECS pour lancer l' CloudWatch agent. Si ce rôle existe déjà, vous devez vous assurer que les politiques `AmazonECSTaskExecutionRolePolicy` et `CloudWatchAgentServerPolicy` sont attachées.

Si vous ne disposez pas déjà de ces rôles, vous pouvez utiliser les commandes suivantes pour les créer et joindre les politiques nécessaires. Cette première commande crée le rôle de tâches ECS.

```
aws iam create-role --role-name CWAgentECSTaskRole \
    --assume-role-policy-document "{\"Version\": \"2012-10-17\",		 	 	 \"Statement\": [{\"Sid\": \"\",\"Effect\": \"Allow\",\"Principal\": {\"Service\": \"ecs-tasks.amazonaws.com\"},\"Action\": \"sts:AssumeRole\"}]}"
```

Après avoir saisi la commande précédente, notez que la valeur `Arn` de la sortie de commande est « TaskRoleArn ». Vous devrez l'utiliser plus tard lorsque vous utiliserez la définition de tâche. Ensuite, entrez la commande suivante pour joindre les politiques nécessaires.

```
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \
    --role-name CWAgentECSTaskRole
```

Cette commande suivante crée le rôle d'exécution de tâche ECS.

```
aws iam create-role --role-name CWAgentECSExecutionRole \
    --assume-role-policy-document "{\"Version\": \"2012-10-17\",		 	 	 \"Statement\": [{\"Sid\": \"\",\"Effect\": \"Allow\",\"Principal\": {\"Service\": \"ecs-tasks.amazonaws.com\"},\"Action\": \"sts:AssumeRole\"}]}"
```

Après avoir saisi la commande précédente, notez que la valeur `Arn` de la sortie de commande est « ExecutionRoleArn ». Vous devrez l'utiliser plus tard lorsque vous utiliserez la définition de tâche. Ensuite, entrez les commandes suivantes pour joindre les politiques nécessaires.

```
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \
    --role-name CWAgentECSExecutionRole
          
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy \
    --role-name CWAgentECSExecutionRole
```

### Créer la définition de tâche et lancer le service de démon
<a name="deploy-container-insights-ECS-instancelevel-taskdefinition"></a>

Créez une définition de tâche et utilisez-la pour lancer l' CloudWatch agent en tant que service daemon. Pour créer la définition de tâche, entrez la commande suivante. Dans les premières lignes, remplacez les espaces réservés par les valeurs réelles de votre déploiement. *logs-region*est la région dans laquelle se trouve CloudWatch Logs et *cluster-region* la région dans laquelle se trouve votre cluster. *task-role-arn*est l'Arn du rôle de tâche ECS que vous utilisez et *execution-role-arn* l'Arn du rôle d'exécution de tâche ECS.

```
TaskRoleArn=task-role-arn
ExecutionRoleArn=execution-role-arn
AWSLogsRegion=logs-region
Region=cluster-region
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/daemon-service/cwagent-ecs-instance-metric/cwagent-ecs-instance-metric.json \
    | sed "s|{{task-role-arn}}|${TaskRoleArn}|;s|{{execution-role-arn}}|${ExecutionRoleArn}|;s|{{awslogs-region}}|${AWSLogsRegion}|" \
    | xargs -0 aws ecs register-task-definition --region ${Region} --cli-input-json
```

Ensuite, exécutez la commande suivante pour lancer le service de démon. Remplacez *cluster-name* et *cluster-region* par le nom et la région de votre cluster Amazon ECS.

**Important**  
Supprimez toutes les stratégies de fournisseur de capacité avant d’exécuter cette commande. Sinon, la commande ne fonctionnera pas.

```
ClusterName=cluster-name
Region=cluster-region
aws ecs create-service \
    --cluster ${ClusterName} \
    --service-name cwagent-daemon-service \
    --task-definition ecs-cwagent-daemon-service \
    --scheduling-strategy DAEMON \
    --region ${Region}
```

Si vous voyez le message d'erreur `An error occurred (InvalidParameterException) when calling the CreateService operation: Creation of service was not idempotent`, cela signifie que vous avez déjà créé un service de démon nommé `cwagent-daemon-service`. Vous devez d'abord supprimer ce service, en utilisant la commande suivante comme exemple.

```
ClusterName=cluster-name
Region=cluster-region
aws ecs delete-service \
    --cluster ${ClusterName} \
    --service cwagent-daemon-service \
    --region ${Region} \
    --force
```

### (En option) Configuration avancée
<a name="deploy-container-insights-ECS-instancelevel-advanced"></a>

Vous pouvez éventuellement utiliser SSM pour spécifier d'autres options de configuration pour l' CloudWatchagent dans vos clusters Amazon ECS hébergés sur des instances EC2. Les options sont les suivantes :
+ `metrics_collection_interval`— Fréquence en secondes à laquelle l' CloudWatch agent collecte des métriques. La valeur par défaut est 60. La plage est comprise entre 1 et 172 000.
+ `endpoint_override` – (En option) Spécifie un point de terminaison différent vers lequel envoyer les journaux. Vous pouvez effectuer cette opération si vous publiez à partir d'un cluster dans un VPC et souhaitez que les données des journaux soient transmises à un point de terminaison d'un VPC.

  La valeur de `endpoint_override` doit être une chaîne qui est une URL.
+ `force_flush_interval` – Spécifie en secondes la durée maximale pendant laquelle les journaux demeurent dans la mémoire tampon avant d'être envoyés au serveur. Quelle que soit la configuration de ce champ, si la taille des journaux dans la mémoire tampon atteint 1 Mo, les journaux sont immédiatement envoyés au serveur. La valeur par défaut est de 5 secondes.
+ `region` – Par défaut, l'agent publie des métriques dans la même région que celle où se trouve l'instance de conteneur Amazon ECS. Pour remplacer cela, vous pouvez spécifier une autre région ici. Par exemple, `"region" : "us-east-1"`

Voici un exemple de configuration personnalisée :

```
{
    "agent": {
        "region": "us-east-1"
    },
    "logs": {
        "metrics_collected": {
            "ecs": {
                "metrics_collection_interval": 30
            }
        },
        "force_flush_interval": 5
    }
}
```

**Pour personnaliser la configuration de votre CloudWatch agent dans vos conteneurs Amazon ECS**

1. Assurez-vous que la SSMRead OnlyAccess politique **Amazon** est attachée à votre rôle d'exécution de tâches Amazon ECS. Vous pouvez entrer la commande suivante pour ce faire. Cet exemple suppose que votre rôle d'exécution de tâches Amazon ECS est CWAgent ECSExecution Role. Si vous utilisez un rôle différent, remplacez ce nom dans la commande suivante.

   ```
   aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonSSMReadOnlyAccess \
           --role-name CWAgentECSExecutionRole
   ```

1. Créez le fichier de configuration personnalisé similaire à l'exemple précédent. Renommez le fichier `/tmp/ecs-cwagent-daemon-config.json`.

1. Exécutez la commande suivante pour placer cette configuration dans le Parameter Store. Remplacez *cluster-region* par la région de votre cluster Amazon ECS. Pour exécuter cette commande, vous devez être connecté à un utilisateur ou à un rôle soumis à la politique **Amazon SSMFull Access**.

   ```
   Region=cluster-region
   aws ssm put-parameter \
       --name "ecs-cwagent-daemon-service" \
       --type "String" \
       --value "`cat /tmp/ecs-cwagent-daemon-config.json`" \
       --region $Region
   ```

1. Téléchargez le fichier de définition de tâche dans un fichier local, tel que `/tmp/cwagent-ecs-instance-metric.json`

   ```
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/daemon-service/cwagent-ecs-instance-metric/cwagent-ecs-instance-metric.json -o /tmp/cwagent-ecs-instance-metric.json
   ```

1. Modifiez le fichier de définition de tâche. Supprimez la section suivante :

   ```
   "environment": [
                   {
                       "name": "USE_DEFAULT_CONFIG",
                       "value": "True"
                   }
               ],
   ```

   Remplacer cette section par ce qui suit :

   ```
   "secrets": [
                   {
                       "name": "CW_CONFIG_CONTENT",
                       "valueFrom": "ecs-cwagent-daemon-service"
                   }
               ],
   ```

1. Redémarrez l'agent en tant que service de démon en procédant comme suit :

   1. Exécutez la commande suivante.

      ```
      TaskRoleArn=task-role-arn
      ExecutionRoleArn=execution-role-arn
      AWSLogsRegion=logs-region
      Region=cluster-region
      cat /tmp/cwagent-ecs-instance-metric.json \
          | sed "s|{{task-role-arn}}|${TaskRoleArn}|;s|{{execution-role-arn}}|${ExecutionRoleArn}|;s|{{awslogs-region}}|${AWSLogsRegion}|" \
          | xargs -0 aws ecs register-task-definition --region ${Region} --cli-input-json
      ```

   1. Exécutez la commande suivante pour lancer le service de démon. Remplacez *cluster-name* et *cluster-region* par le nom et la région de votre cluster Amazon ECS.

      ```
      ClusterName=cluster-name
      Region=cluster-region
      aws ecs create-service \
          --cluster ${ClusterName} \
          --service-name cwagent-daemon-service \
          --task-definition ecs-cwagent-daemon-service \
          --scheduling-strategy DAEMON \
          --region ${Region}
      ```

      Si vous voyez le message d'erreur `An error occurred (InvalidParameterException) when calling the CreateService operation: Creation of service was not idempotent`, cela signifie que vous avez déjà créé un service de démon nommé `cwagent-daemon-service`. Vous devez d'abord supprimer ce service, en utilisant la commande suivante comme exemple.

      ```
      ClusterName=cluster-name
      Region=Region
      aws ecs delete-service \
          --cluster ${ClusterName} \
          --service cwagent-daemon-service \
          --region ${Region} \
          --force
      ```

# Déploiement de la AWS distribution pour collecter des métriques OpenTelemetry au niveau de l'instance EC2 sur des clusters Amazon ECS
<a name="deploy-container-insights-ECS-OTEL"></a>

Suivez les étapes décrites dans cette section pour utiliser AWS Distro pour collecter des métriques OpenTelemetry au niveau de l'instance EC2 sur un cluster Amazon ECS. Pour plus d'informations sur le AWS Distro for OpenTelemetry, voir [AWS Distro](https://aws.amazon.com/otel/) for. OpenTelemetry

Cette procédure suppose que vous avez déjà un cluster exécutant Amazon ECS. Ce cluster doit être déployé avec le type de lancement EC2. Pour plus d'informations sur l'utilisation de AWS Distro pour la télémétrie ouverte avec Amazon ECS et sur la configuration d'un cluster Amazon ECS à cette fin, consultez [Configuration de AWS Distro pour Collector OpenTelemetry dans Amazon Elastic Container Service pour les métriques au niveau des instances ECS EC2](https://aws-otel.github.io/docs/setup/ecs#3-setup-the-aws-otel-collector-for-ecs-ec2-instance-metrics). 

**Topics**
+ [Configuration rapide à l'aide de CloudFormation](#container-insights-ECS-OTEL-quicksetup)
+ [Configuration manuelle et personnalisée](#container-insights-ECS-OTEL-custom)

## Configuration rapide à l'aide de CloudFormation
<a name="container-insights-ECS-OTEL-quicksetup"></a>

Téléchargez le fichier CloudFormation modèle pour installer AWS Distro for OpenTelemetry Collector pour Amazon ECS sur EC2. Exécutez la commande curl suivante.

```
curl -O https://raw.githubusercontent.com/aws-observability/aws-otel-collector/main/deployment-template/ecs/aws-otel-ec2-instance-metrics-daemon-deployment-cfn.yaml
```

Après avoir téléchargé le fichier modèle, ouvrez-le et remplacez-le *PATH\$1TO\$1CloudFormation\$1TEMPLATE* par le chemin dans lequel vous l'avez enregistré. Exportez ensuite les paramètres suivants et exécutez la CloudFormation commande, comme indiqué dans la commande suivante.
+ **Cluster\$1Name**– Nom du cluster Amazon ECS
+ **AWS\$1RRégion** — La région où les données seront envoyées
+ **PATH\$1TO\$1 CloudFormation \$1TEMPLATE** — Le chemin dans lequel vous avez enregistré le fichier modèle. CloudFormation 
+ **commande** — Pour permettre au OpenTelemetry collecteur AWS Distro for de collecter les métriques au niveau de l'instance pour Amazon ECS sur Amazon EC2, vous devez spécifier ce paramètre. `--config=/etc/ecs/otel-instance-metrics-config.yaml`

```
ClusterName=Cluster_Name
Region=AWS_Region
command=--config=/etc/ecs/otel-instance-metrics-config.yaml
aws cloudformation create-stack --stack-name AOCECS-${ClusterName}-${Region} \
--template-body file://PATH_TO_CloudFormation_TEMPLATE \
--parameters ParameterKey=ClusterName,ParameterValue=${ClusterName} \
ParameterKey=CreateIAMRoles,ParameterValue=True \
ParameterKey=command,ParameterValue=${command} \
--capabilities CAPABILITY_NAMED_IAM \
--region ${Region}
```

Après avoir exécuté cette commande, utilisez la console Amazon ECS pour voir si la tâche est en cours d'exécution.

### Dépannage de la configuration rapide
<a name="container-insights-ECS-OTEL-quicksetup-troubleshooting"></a>

Pour vérifier l'état de la CloudFormation pile, entrez la commande suivante.

```
ClusterName=cluster-name
Region=cluster-region
aws cloudformation describe-stack --stack-name AOCECS-$ClusterName-$Region --region $Region
```

Si la valeur de `StackStatus` ne correspond pas à `CREATE_COMPLETE` ou `CREATE_IN_PROGRESS`, vérifiez les événements de la pile pour trouver l'erreur. Entrez la commande suivante.

```
ClusterName=cluster-name
Region=cluster-region
aws cloudformation describe-stack-events --stack-name AOCECS-$ClusterName-$Region --region $Region
```

Pour vérifier l'état du service de démon `AOCECS`, saisissez la commande suivante. Dans la sortie, vous devriez voir que `runningCount` est égal au `desiredCount` dans la section « deployment » (déploiement). Si ce n'est pas égal, vérifiez la section « failures » (échecs) dans la sortie.

```
ClusterName=cluster-name
Region=cluster-region
aws ecs describe-services --services AOCECS-daemon-service --cluster $ClusterName --region $Region
```

Vous pouvez également utiliser la console CloudWatch Logs pour consulter le journal de l'agent. Recherchez le groupe**/aws/ecs/containerinsights/\$1ClusterName\$1/performance**log.

## Configuration manuelle et personnalisée
<a name="container-insights-ECS-OTEL-custom"></a>

Suivez les étapes décrites dans cette section pour déployer manuellement le AWS Distro afin de collecter des métriques OpenTelemetry au niveau de l'instance à partir de vos clusters Amazon ECS hébergés sur des instances Amazon EC2.

### Étape 1 : Rôles et politiques nécessaires
<a name="container-insights-ECS-OTEL-custom-iam"></a>

Deux rôles IAM sont requis. Vous devez les créer s'ils n'existent pas déjà. Pour plus d'informations sur les rôles, consultez [Créer une politique IAM](https://aws-otel.github.io/docs/setup/ecs/create-iam-policy) et [Créer un rôle IAM](https://aws-otel.github.io/docs/setup/ecs/create-iam-role).

### Étape 2 : Créer la définition de tâche
<a name="container-insights-ECS-OTEL-custom-task"></a>

Créez une définition de tâche et utilisez-la pour lancer la AWS distribution en OpenTelemetry tant que service daemon.

Pour utiliser le modèle de définition de tâche afin de créer la définition de tâche, suivez les instructions de la section [Créer une définition de tâche ECS EC2 pour une instance EC2 avec AWS OTel Collector](https://aws-otel.github.io/docs/setup/ecs/task-definition-for-ecs-ec2-instance).

Pour utiliser la console Amazon ECS afin de créer la définition de tâche, suivez les instructions de la section [Install AWS OTel Collector en créant une définition de tâche via AWS la console pour les métriques d'instance Amazon ECS EC2](https://aws-otel.github.io/docs/setup/ecs/create-task-definition-instance-console).

### Étape 3 : Lancer le service de démon
<a name="container-insights-ECS-OTEL-custom-launch"></a>

Pour lancer la AWS distribution en OpenTelemetry tant que service daemon, suivez les instructions de la section [Exécutez votre tâche sur l'Amazon Elastic Container Service (Amazon ECS) à l'aide du](https://aws-otel.github.io/docs/setup/ecs/run-daemon-service) service daemon.

### (En option) Configuration avancée
<a name="container-insights-ECS-OTEL-custom-advancdeconfig"></a>

Vous pouvez éventuellement utiliser SSM pour spécifier d'autres options de configuration pour la AWS distribution OpenTelemetry dans vos clusters Amazon ECS hébergés sur des instances Amazon EC2. Pour plus d'informations sur la création d'un fichier de configuration, voir [ OpenTelemetry Configuration personnalisée](https://aws-otel.github.io/docs/setup/ecs#5-custom-opentelemetry-configuration). Pour plus d'informations sur les options que vous pouvez utiliser dans le fichier de configuration, consultez [Récepteur Container Insights AWS](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/awscontainerinsightreceiver/README.md).

# Configurer FireLens pour envoyer des journaux à CloudWatch Logs
<a name="deploy-container-insights-ECS-logs"></a>

FireLens pour Amazon ECS vous permet d'utiliser les paramètres de définition des tâches pour acheminer les journaux vers Amazon Logs à CloudWatch des fins de stockage et d'analyse des journaux. FireLens fonctionne avec [Fluent Bit](https://fluentbit.io/) et [Fluentd](https://www.fluentd.org/). Nous fournissons une image AWS pour Fluent Bit, ou vous pouvez utiliser votre propre image Fluent Bit ou Fluentd. La création de définitions de tâches Amazon ECS avec une FireLens configuration est prise en charge à l' AWS SDKsaide des AWS CLI AWS Management Console Pour plus d'informations sur CloudWatch les journaux, voir [Qu'est-ce que CloudWatch les journaux ?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) .

Certaines considérations clés doivent être prises en compte lors de FireLens l'utilisation d'Amazon ECS. Pour plus d'informations, consultez [Éléments](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html#firelens-considerations).

Pour trouver les images AWS pour Fluent Bit, voir [Utilisation de l'image AWS pour Fluent Bit](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/firelens-using-fluentbit.html).

Pour créer une définition de tâche utilisant une FireLens configuration, voir [Création d'une définition de tâche utilisant une FireLens configuration](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/firelens-taskdef.html).

**Exemple**

L'exemple de définition de tâche suivant montre comment spécifier une configuration de journal qui transfère les journaux à un groupe de CloudWatch journaux de journaux. Pour plus d'informations, consultez [Qu'est-ce qu'Amazon CloudWatch Logs ?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) dans le *guide de l'utilisateur d'Amazon CloudWatch Logs*.

Dans les options de configuration du journal, spécifiez le nom du groupe de journaux et la région dans laquelle il existe. Pour que Fluent Bit crée le groupe de journaux en votre nom, spécifiez `"auto_create_group":"true"`. Vous pouvez également spécifier l'ID de tâche comme préfixe de flux de journaux, qui facilite le filtrage. Pour plus d'informations, voir [Plug-in Fluent Bit pour CloudWatch les journaux](https://github.com/aws/amazon-cloudwatch-logs-for-fluent-bit/blob/mainline/README.md).

```
{
	"family": "firelens-example-cloudwatch",
	"taskRoleArn": "arn:aws:iam::123456789012:role/ecs_task_iam_role",
	"containerDefinitions": [
		{
			"essential": true,
			"image": "906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:latest",
			"name": "log_router",
			"firelensConfiguration": {
				"type": "fluentbit"
			},
			"logConfiguration": {
				"logDriver": "awslogs",
				"options": {
					"awslogs-group": "firelens-container",
					"awslogs-region": "us-west-2",
					"awslogs-create-group": "true",
					"awslogs-stream-prefix": "firelens"
				}
			},
			"memoryReservation": 50
		 },
		 {
			 "essential": true,
			 "image": "nginx",
			 "name": "app",
			 "logConfiguration": {
				 "logDriver":"awsfirelens",
				 "options": {
					"Name": "cloudwatch_logs",
					"region": "us-west-2",
					"log_key": "log",
                                 "log_group_name": "/aws/ecs/containerinsights/my-cluster/application",
					"auto_create_group": "true",
					"log_stream_name": "my-task-id"
				}
			},
			"memoryReservation": 100
		}
	]
}
```