

 **Aidez à améliorer cette page** 

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.

Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien **Modifier cette page sur** qui se trouve dans le volet droit de chaque page.

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émarrez la journalisation AWS Fargate pour votre cluster
<a name="fargate-logging"></a>

Amazon EKS on Fargate propose un routeur de journal intégré basé sur Fluent Bit. Cela signifie que vous n’exécutez pas explicitement un conteneur Fluent Bit comme sidecar, mais qu’Amazon l’exécute pour vous. Tout ce que vous avez à faire est de configurer le routeur de journaux. La configuration se fait par le biais d'un `ConfigMap` qui doit répondre aux critères suivants :
+ Nommé `aws-logging` 
+ Créé dans un espace de noms dédié appelé `aws-observability` 
+ Ne doit pas dépasser 5 300 caractères.

Une fois que vous avez créé le `ConfigMap`, Amazon EKS on Fargate le détecte automatiquement et configure le routeur de journaux avec lui. Fargate utilise une version de AWS pour Fluent Bit, une distribution compatible en amont de Fluent Bit gérée par AWS. Pour plus d'informations, consultez [AWS for Fluent Bit](https://github.com/aws/aws-for-fluent-bit) sur GitHub.

Le routeur de journaux vous permet d'utiliser la diversité des services sur AWSpour l'analyse des journaux et le stockage. Vous pouvez diffuser les journaux depuis Fargate directement vers Amazon CloudWatch, Amazon OpenSearch Service. Vous pouvez également diffuser les journaux vers des destinations telles qu’[Amazon S3](https://aws.amazon.com/s3/), [Amazon Kinesis Data Streams](https://aws.amazon.com/kinesis/data-streams/) et des outils partenaires via [Amazon Data Firehose](https://aws.amazon.com/kinesis/data-firehose/).
+ Un profil Fargate existant qui spécifie un espace de noms Kubernetes existant dans lequel vous déployez des pods Fargate. Pour de plus amples informations, consultez [Étape 3 : créer un profil Fargate pour votre cluster](fargate-getting-started.md#fargate-gs-create-profile).
+ Un rôle d’exécution de pod Fargate existant. Pour de plus amples informations, consultez [Étape 2 : créer un rôle d’exécution Fargate Pod](fargate-getting-started.md#fargate-sg-pod-execution-role).

## Configuration du routeur de journaux
<a name="fargate-logging-log-router-configuration"></a>

**Important**  
Pour que les journaux soient publiés avec succès, il doit y avoir un accès réseau depuis le VPC dans lequel se trouve votre cluster vers la destination des journaux. Cela concerne principalement les utilisateurs qui personnalisent les règles de sortie pour leur VPC. Pour un exemple d’utilisation de CloudWatch, consultez la section [Utilisation des journaux CloudWatch avec les points de terminaison d’un VPC d’interface](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch-logs-and-interface-VPC.html) dans le *Guide de l’utilisateur Amazon CloudWatch Logs*.

Dans les étapes suivantes, remplacez chaque *valeur d’exemple* par vos propres valeurs.

1. Créez un espace de noms Kubernetes dédié nommé `aws-observability`.

   1. Enregistrez le contenu suivant dans un fichier nommé `aws-observability-namespace.yaml` sur votre ordinateur. La valeur pour `name` doit être `aws-observability` et le label `aws-observability: enabled` est obligatoire.

      ```
      kind: Namespace
      apiVersion: v1
      metadata:
        name: aws-observability
        labels:
          aws-observability: enabled
      ```

   1. Créez l'espace de noms.

      ```
      kubectl apply -f aws-observability-namespace.yaml
      ```

1. Créez un `ConfigMap` avec une valeur de données `Fluent Conf` pour envoyer les journaux des conteneurs vers une destination. Fluent Conf est Fluent Bit, qui est un langage de configuration de processeur de journaux rapide et léger, utilisé pour acheminer les journaux des conteneurs vers une destination de journalisation de votre choix. Pour plus d'informations, consultez [Fichier de configuration](https://docs.fluentbit.io/manual/administration/configuring-fluent-bit/classic-mode/configuration-file) dans la documentation Fluent Bit.
**Important**  
Dans une `Fluent Conf` type, les principales sections incluses sont `Service`, `Input`, `Filter` et `Output`. Le routeur de journaux Fargate n'accepte cependant que :  
Les sections `Filter` et `Output`.
Une section `Parser`.
Si vous fournissez d'autres sections, elles seront rejetées.

   Le routeur de journal Fargate gère les sections `Service` et `Input`. Il comporte la section `Input` suivante, qui ne peut pas être modifiée et n’est pas nécessaire dans votre `ConfigMap`. Cependant, vous pouvez en tirer des informations, telles que la limite de la mémoire tampon et la balise appliquée pour les journaux.

   ```
   [INPUT]
       Name tail
       Buffer_Max_Size 66KB
       DB /var/log/flb_kube.db
       Mem_Buf_Limit 45MB
       Path /var/log/containers/*.log
       Read_From_Head On
       Refresh_Interval 10
       Rotate_Wait 30
       Skip_Long_Lines On
       Tag kube.*
   ```

   Lors de la création du `ConfigMap`, prenez en compte les règles suivantes que Fargate utilise pour valider les champs :
   +  `[FILTER]`, `[OUTPUT]` et `[PARSER]` sont censés être spécifiés sous chaque clé correspondante. Par exemple, `[FILTER]` doit être inférieur à `filters.conf`. Vous pouvez avoir un ou plusieurs `[FILTER]` sous `filters.conf`. `[OUTPUT]` et `[PARSER]` doivent également être sous leurs clés correspondantes. En spécifiant plusieurs sections `[OUTPUT]`, vous pouvez acheminer vos journaux vers différentes destinations en même temps.
   + Fargate valide les clés requises de chaque section. `Name` et `match` sont nécessaires pour chaque `[FILTER]` et `[OUTPUT]`. `Name` et `format` sont nécessaires pour chaque `[PARSER]`. Ces noms sont sensibles à la casse.
   + Les variables d’environnement telles que `${ENV_VAR}` ne sont pas autorisées dans le `ConfigMap`.
   + L'indentation doit être la même pour la directive ou la paire clé-valeur dans chaque `filters.conf`, `output.conf` et `parsers.conf`. Les paires clé-valeur doivent être indentées plus que les directives.
   + Fargate valide par rapport aux filtres pris en charge suivants : `grep`, `parser`, `record_modifier`, `rewrite_tag`, `throttle`, `nest`, `modify` et `kubernetes`.
   + Fargate valide par rapport à la sortie prise en charge suivante : `es`, `firehose`, `kinesis_firehose`, `cloudwatch`, `cloudwatch_logs` et `kinesis`.
   + Au moins un plug-in `Output` doit être fourni dans le `ConfigMap` pour activer la journalisation. `Filter` et `Parser` ne sont pas nécessaires pour activer la journalisation.

     Vous pouvez également exécuter Fluent Bit sur Amazon EC2 en utilisant la configuration souhaitée pour résoudre les problèmes qui surviennent lors de la validation. Créez votre `ConfigMap` en utilisant l'un des exemples suivants.
**Important**  
La journalisation Amazon EKS Fargate ne prend pas en charge la configuration dynamique d’un `ConfigMap`. Les modifications apportées à un `ConfigMap` sont appliquées uniquement aux nouveaux pods. Les modifications ne sont pas appliquées aux pods existants.

     Créez un `ConfigMap` en utilisant l'exemple pour votre destination de journal désirée.
**Note**  
Vous pouvez également utiliser Amazon Kinesis Data Streams comme destination du journal. Si vous utilisez Kinesis Data Streams, assurez-vous que l'autorisation `kinesis:PutRecords` a été accordée au rôle d'exécution du pod. Pour plus d’informations, consultez [Permissions](https://docs.fluentbit.io/manual/pipeline/outputs/kinesis#permissions) d’Amazon Kinesis Data Streams dans le *Manuel officiel Fluent Bit*.  
**Example**  

------
#### [ CloudWatch ]

   Vous disposez de deux options de sortie lorsque vous utilisez CloudWatch :
   +  [Un plugin de sortie écrit en C](https://docs.fluentbit.io/manual/v/1.5/pipeline/outputs/cloudwatch) 
   +  [Un plugin de sortie écrit en Golang](https://github.com/aws/amazon-cloudwatch-logs-for-fluent-bit) 

   L'exemple suivant explique comment utiliser le plugin `cloudwatch_logs` pour envoyer des journaux à CloudWatch.

   1. Enregistrez le contenu suivant dans un fichier nommé `aws-logging-cloudwatch-configmap.yaml`. Remplacez *region-code* par la région AWS dans laquelle votre cluster se situe. Les paramètres sous `[OUTPUT]` sont requises.

      ```
      kind: ConfigMap
      apiVersion: v1
      metadata:
        name: aws-logging
        namespace: aws-observability
      data:
        flb_log_cw: "false"  # Set to true to ship Fluent Bit process logs to CloudWatch.
        filters.conf: |
          [FILTER]
              Name parser
              Match *
              Key_name log
              Parser crio
          [FILTER]
              Name kubernetes
              Match kube.*
              Merge_Log On
              Keep_Log Off
              Buffer_Size 0
              Kube_Meta_Cache_TTL 300s
        output.conf: |
          [OUTPUT]
              Name cloudwatch_logs
              Match   kube.*
              region region-code
              log_group_name my-logs
              log_stream_prefix from-fluent-bit-
              log_retention_days 60
              auto_create_group true
        parsers.conf: |
          [PARSER]
              Name crio
              Format Regex
              Regex ^(?<time>[^ ]+) (?<stream>stdout|stderr) (?<logtag>P|F) (?<log>.*)$
              Time_Key    time
              Time_Format %Y-%m-%dT%H:%M:%S.%L%z
      ```

   1. Appliquez le manifeste à votre cluster.

      ```
      kubectl apply -f aws-logging-cloudwatch-configmap.yaml
      ```

------
#### [ Amazon OpenSearch Service ]

   Si vous souhaitez envoyer des journaux à Amazon OpenSearch Service, vous pouvez utiliser [es](https://docs.fluentbit.io/manual/v/1.5/pipeline/outputs/elasticsearch) output, un plug-in écrit en C. L’exemple suivant vous montre comment utiliser le plug-in pour envoyer des journaux à OpenSearch.

   1. Enregistrez le contenu suivant dans un fichier nommé `aws-logging-opensearch-configmap.yaml`. Remplacez la *valeur d’exemple* par vos propres valeurs.

      ```
      kind: ConfigMap
      apiVersion: v1
      metadata:
        name: aws-logging
        namespace: aws-observability
      data:
        output.conf: |
          [OUTPUT]
            Name  es
            Match *
            Host  search-example-gjxdcilagiprbglqn42jsty66y.region-code.es.amazonaws.com
            Port  443
            Index example
            Type  example_type
            AWS_Auth On
            AWS_Region region-code
            tls   On
      ```

   1. Appliquez le manifeste à votre cluster.

      ```
      kubectl apply -f aws-logging-opensearch-configmap.yaml
      ```

------
#### [ Firehose ]

   Vous disposez de deux options de sortie lorsque vous envoyez des journaux à Firehose :
   +  [kinesis\$1firehose](https://docs.fluentbit.io/manual/pipeline/outputs/firehose) : un plug-in de sortie écrit en C.
   +  [firehose](https://github.com/aws/amazon-kinesis-firehose-for-fluent-bit) : un plug-in de sortie écrit en Golang.

     L’exemple suivant vous montre comment utiliser le plug-in `kinesis_firehose` pour envoyer des journaux à Firehose.

     1. Enregistrez le contenu suivant dans un fichier nommé `aws-logging-firehose-configmap.yaml`. Remplacez *region-code* par la région AWS dans laquelle votre cluster se situe.

        ```
        kind: ConfigMap
        apiVersion: v1
        metadata:
          name: aws-logging
          namespace: aws-observability
        data:
          output.conf: |
            [OUTPUT]
             Name  kinesis_firehose
             Match *
             region region-code
             delivery_stream my-stream-firehose
        ```

     1. Appliquez le manifeste à votre cluster.

        ```
        kubectl apply -f aws-logging-firehose-configmap.yaml
        ```

------

1. Configurez les autorisations pour le rôle d’exécution Fargate Pod afin d’envoyer les journaux vers votre destination.

   1. Téléchargez la politique IAM pour votre destination sur votre ordinateur.  
**Example**  

------
#### [ CloudWatch ]

      Téléchargez la politique IAM CloudWatch sur votre ordinateur. Vous pouvez également [afficher la politique](https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/cloudwatchlogs/permissions.json) sur GitHub.

      ```
      curl -O https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/cloudwatchlogs/permissions.json
      ```

------
#### [ Amazon OpenSearch Service ]

      Téléchargez la politique IAM OpenSearch sur votre ordinateur. Vous pouvez également [afficher la politique](https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/amazon-elasticsearch/permissions.json) sur GitHub.

      ```
      curl -O https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/amazon-elasticsearch/permissions.json
      ```

      Assurez-vous que le contrôle d'accès OpenSearch Dashboards est correctement configuré. Le `all_access role` dans OpenSearch Dashboards doit avoir le rôle d’exécution du pod Fargate et le rôle IAM mappés. Le même mappage doit être fait pour le rôle `security_manager`. Vous pouvez ajouter les mappages précédents en sélectionnant `Menu`, `Security` et `Roles`, puis sélectionner les rôles correspondants. Pour plus d'informations, consultez [Comment dépanner CloudWatch Logs afin qu'il diffuse vers mon domaine Amazon ES ?](https://aws.amazon.com/tr/premiumsupport/knowledge-center/es-troubleshoot-cloudwatch-logs/).

------
#### [ Firehose ]

      Téléchargez la politique IAM Firehose sur votre ordinateur. Vous pouvez également [afficher la politique](https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/kinesis-firehose/permissions.json) sur GitHub.

      ```
      curl -O https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/kinesis-firehose/permissions.json
      ```

------

   1. Créez une politique IAM à partir du fichier de politique que vous avez téléchargé.

      ```
      aws iam create-policy --policy-name eks-fargate-logging-policy --policy-document file://permissions.json
      ```

   1. Attachez la politique IAM au rôle d'exécution de pod spécifié pour votre profil Fargate avec la commande suivante. Remplacez *111122223333* par votre ID de compte. Remplacez *AmazonEKSFargatePodExecutionRole* par votre rôle d’exécution de pod (pour plus d’informations, consultez [Étape 2 : créer un rôle d’exécution Fargate Pod](fargate-getting-started.md#fargate-sg-pod-execution-role)).

      ```
      aws iam attach-role-policy \
        --policy-arn arn:aws:iam::111122223333:policy/eks-fargate-logging-policy \
        --role-name AmazonEKSFargatePodExecutionRole
      ```

### Prise en charge des filtres Kubernetes
<a name="fargate-logging-kubernetes-filter"></a>

Le filtre Kubernetes de Fluent Bit vous permet d'ajouter des métadonnées Kubernetes à vos fichiers journaux. Pour plus d'informations sur le filtre, consultez [Kubernetes](https://docs.fluentbit.io/manual/pipeline/filters/kubernetes) dans la documentation Fluent Bit. Vous pouvez appliquer un filtre en utilisant le point de terminaison du serveur d'API.

```
filters.conf: |
    [FILTER]
        Name             kubernetes
        Match            kube.*
        Merge_Log           On
        Buffer_Size         0
        Kube_Meta_Cache_TTL 300s
```

**Important**  
 `Kube_URL`, `Kube_CA_File`, `Kube_Token_Command` et `Kube_Token_File` sont des paramètres de configuration appartenant au service et ne doivent pas être spécifiés. Amazon EKS Fargate remplit ces valeurs.
 `Kube_Meta_Cache_TTL` est le moment où Fluent Bit attend qu'il communique avec le serveur d'API pour obtenir les dernières métadonnées. Si la valeur `Kube_Meta_Cache_TTL` n’est pas spécifiée, Amazon EKS Fargate ajoute une valeur par défaut de 30 minutes pour diminuer la charge sur le serveur d’API.

### Pour envoyer les journaux de processus de Fluent Bit à votre compte
<a name="ship-fluent-bit-process-logs"></a>

Vous pouvez aussi envoyer les journaux de processus de Fluent Bit à Amazon CloudWatch en utilisant le `ConfigMap` suivant. L'envoi des journaux de processus Fluent Bit à CloudWatch implique des coûts supplémentaires d'ingestion de journaux et de stockage. Remplacez *region-code* par la région AWS dans laquelle votre cluster se situe.

```
kind: ConfigMap
apiVersion: v1
metadata:
  name: aws-logging
  namespace: aws-observability
  labels:
data:
  # Configuration files: server, input, filters and output
  # ======================================================
  flb_log_cw: "true"  # Ships Fluent Bit process logs to CloudWatch.

  output.conf: |
    [OUTPUT]
        Name cloudwatch
        Match kube.*
        region region-code
        log_group_name fluent-bit-cloudwatch
        log_stream_prefix from-fluent-bit-
        auto_create_group true
```

Les journaux se trouvent dans CloudWatch, dans la même région AWS que le cluster. Le nom du groupe de journaux est ` my-cluster-fluent-bit-logs` et le nom du flux de journaux Fluent Bit est `fluent-bit-podname-pod-namespace `.

**Note**  
Les journaux de processus sont envoyés seulement lorsque le processus Fluent Bit démarre avec succès. S'il y a un échec lors du démarrage de Fluent Bit, les journaux de processus sont manqués. Vous pouvez uniquement envoyer les journaux de processus à CloudWatch.
Pour déboguer l'envoi des journaux de processus à votre compte, vous pouvez appliquer le `ConfigMap` précédent pour obtenir les journaux de processus. L'échec du démarrage de Fluent Bit est généralement dû au fait que votre `ConfigMap` n'est pas analysé ou accepté par Fluent Bit lors du démarrage.

### Pour arrêter l’envoi des journaux de processus Fluent Bit
<a name="stop-fluent-bit-process-logs"></a>

L'envoi des journaux de processus Fluent Bit à CloudWatch implique des coûts supplémentaires d'ingestion de journaux et de stockage. Pour exclure les journaux de processus d'une configuration de `ConfigMap` existante, procédez comme suit.

1. Localisez le groupe de journaux CloudWatch créé automatiquement pour les journaux de processus Fluent Bit de votre cluster Amazon EKS après avoir activé la journalisation Fargate. Il utilise le format ` my-cluster-fluent-bit-logs`.

1. Supprimez les flux de journaux CloudWatch existants créés pour les journaux de processus de chaque pod dans le groupe de journaux CloudWatch.

1. Modifiez la `ConfigMap` et définissez `flb_log_cw: "false"`.

1. Redémarrez tous les pods existants du cluster.

## Tester l'application
<a name="fargate-logging-test-application"></a>

1. Déployez un exemple de pod.

   1. Enregistrez le contenu suivant dans un fichier nommé `sample-app.yaml` sur votre ordinateur.

      ```
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: sample-app
        namespace: same-namespace-as-your-fargate-profile
      spec:
        replicas: 3
        selector:
          matchLabels:
            app: nginx
        template:
          metadata:
            labels:
              app: nginx
          spec:
            containers:
              - name: nginx
                image: nginx:latest
                ports:
                  - name: http
                    containerPort: 80
      ```

   1. Appliquez le fichier manifeste à votre cluster.

      ```
      kubectl apply -f sample-app.yaml
      ```

1. Affichez les journaux NGINX en utilisant les destinations que vous avez configurées dans le fichier `ConfigMap`.

## Considérations sur les tailles
<a name="fargate-logging-size-considerations"></a>

Nous vous suggérons de prévoir jusqu'à 50 Mo de mémoire pour le routeur de journaux. Si votre application doit générer des journaux à un débit très élevé, vous devez prévoir jusqu'à 100 Mo.

## Dépannage
<a name="fargate-logging-troubleshooting"></a>

Pour vérifier si la fonctionnalité de journalisation est activée ou désactivée pour une raison quelconque, telle qu’une valeur non valide `ConfigMap`, et pourquoi elle n’est pas valide, vérifiez les événements de votre Pod avec `kubectl describe pod pod-name `. La sortie peut inclure des événements de pods qui précisent si la journalisation est activée ou non, comme l’exemple de sortie suivant.

```
[...]
Annotations:          CapacityProvisioned: 0.25vCPU 0.5GB
                      Logging: LoggingDisabled: LOGGING_CONFIGMAP_NOT_FOUND
[...]
Events:
  Type     Reason           Age        From                                                           Message
  ----     ------           ----       ----                                                           -------
  Warning  LoggingDisabled  <unknown>  fargate-scheduler                                              Disabled logging because aws-logging configmap was not found. configmap "aws-logging" not found
```

Les événements du pod sont éphémères avec une période de temps dépendant des paramètres. Vous pouvez également afficher les annotations d’un pod à l’aide de `kubectl describe pod pod-name `. Dans l’annotation du pod, il existe des informations sur l’activation ou la désactivation de la fonction de journalisation et la cause.