

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.

# Configurer Fluent Bit comme un DaemonSet pour envoyer des CloudWatch journaux à Logs
<a name="Container-Insights-setup-logs-FluentBit"></a>

Les sections suivantes vous aident à déployer Fluent Bit pour envoyer des journaux depuis des conteneurs vers CloudWatch des journaux.

**Topics**
+ [Configuration de Fluent Bit](#Container-Insights-FluentBit-setup)
+ [Prise en charge des journaux multilignes](#ContainerInsights-fluentbit-multiline)
+ [(En option) Réduction du volume des journaux de Fluent Bit](#ContainerInsights-fluentbit-volume)
+ [Résolution des problèmes](#Container-Insights-FluentBit-troubleshoot)
+ [Tableau de bord](#Container-Insights-FluentBit-dashboard)

## Configuration de Fluent Bit
<a name="Container-Insights-FluentBit-setup"></a>

Pour configurer Fluent Bit afin de collecter les journaux de vos conteneurs, vous pouvez suivre les étapes de [Configuration Quick Start pour Container Insights sur Amazon EKS et Kubernetes](Container-Insights-setup-EKS-quickstart.md) ou celles de cette section.

Avec l'une ou l'autre méthode, le rôle IAM qui est attaché au nœuds du cluster doit disposer d'autorisations suffisantes. Pour plus d'informations sur les autorisations requises pour exécuter un cluster Amazon EKS, consultez [Politiques, rôles et autorisations IAM Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/IAM_policies.html) dans le *Guide de l'utilisateur Amazon EKS*.

Dans les étapes suivantes, vous allez configurer Fluent Bit en tant que DaemonSet pour envoyer des journaux à Logs. CloudWatch Une fois que vous avez terminé cette étape, Fluent Bit crée les groupes de journaux suivants, s'ils n'existent pas déjà.

**Important**  
Si FluentD est déjà configuré dans Container Insights et que le FluentD ne fonctionne pas comme prévu (cela peut se produire si vous utilisez le moteur d'exécution), vous devez `containerd` le désinstaller avant d'installer DaemonSet FluentD pour empêcher FluentD de traiter les messages du journal d'erreurs FluentD. Sinon, vous devez désinstaller Fluentd immédiatement après avoir installé Fluent Bit. La désinstallation de Fluentd après l’installation de Fluent Bit garantit la continuité de la journalisation pendant ce processus de migration. Un seul Fluent Bit ou FluentD est nécessaire pour envoyer des journaux à Logs. CloudWatch 


| Nom du groupe de journaux | Source des journaux | 
| --- | --- | 
|  `/aws/containerinsights/Cluster_Name/application`  |  Tous les fichiers journaux situés dans `/var/log/containers`  | 
|  `/aws/containerinsights/Cluster_Name/host`  |  Journaux provenant de `/var/log/dmesg`, `/var/log/secure` et `/var/log/messages`  | 
|  `/aws/containerinsights/Cluster_Name/dataplane`  |  Les journaux dans `/var/log/journal` pour `kubelet.service`, `kubeproxy.service` et `docker.service`.  | 

**Pour installer Fluent Bit pour envoyer des journaux depuis des conteneurs vers des CloudWatch journaux**

1. Si vous n'avez pas encore d'espace de noms appelé `amazon-cloudwatch`, créez-en un en saisissant la commande suivante :

   ```
   kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cloudwatch-namespace.yaml
   ```

1. Exécutez la commande suivante pour créer un ConfigMap nom `cluster-info` avec le nom du cluster et la région à laquelle envoyer les journaux. Remplacez *cluster-name* et *cluster-region* par le nom et la région de votre cluster.

   ```
   ClusterName=cluster-name
   RegionName=cluster-region
   FluentBitHttpPort='2020'
   FluentBitReadFromHead='Off'
   [[ ${FluentBitReadFromHead} = 'On' ]] && FluentBitReadFromTail='Off'|| FluentBitReadFromTail='On'
   [[ -z ${FluentBitHttpPort} ]] && FluentBitHttpServer='Off' || FluentBitHttpServer='On'
   kubectl create configmap fluent-bit-cluster-info \
   --from-literal=cluster.name=${ClusterName} \
   --from-literal=http.server=${FluentBitHttpServer} \
   --from-literal=http.port=${FluentBitHttpPort} \
   --from-literal=read.head=${FluentBitReadFromHead} \
   --from-literal=read.tail=${FluentBitReadFromTail} \
   --from-literal=logs.region=${RegionName} -n amazon-cloudwatch
   ```

   Dans cette commande, le `FluentBitHttpServer` permettant de surveiller les métriques de plugin est activé par défaut. Pour le désactiver, remplacez la troisième ligne de la commande par `FluentBitHttpPort=''` (chaîne vide) dans la commande.

   Également par défaut, Fluent Bit lit les fichiers journaux de processus, et ne capture que les nouveaux journaux après son déploiement. Si vous souhaitez faire le contraire, définissez `FluentBitReadFromHead='On'` et il va collecter tous les journaux dans le système de fichiers.

1. Téléchargez et déployez le daemonset Fluent Bit sur le cluster en exécutant l'une des commandes suivantes.
   + Si vous voulez obtenir la configuration optimisée de Fluent Bit pour les ordinateurs Linux, exécutez cette commande.

     ```
     kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/fluent-bit/fluent-bit.yaml
     ```
   + Si vous voulez obtenir la configuration optimisée de Fluent Bit pour les ordinateurs Windows, exécutez cette commande.

     ```
     kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/fluent-bit/fluent-bit-windows.yaml
     ```
   + Si vous utilisez des ordinateurs Linux et voulez la configuration Fluent Bit la plus similaire à Fluentd, exécutez cette commande.

     ```
     kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/fluent-bit/fluent-bit-compatible.yaml
     ```
**Important**  
La configuration du daemonset Fluent Bit définit par défaut le niveau de journalisation sur INFO, ce qui peut entraîner des coûts d'ingestion de CloudWatch logs plus élevés. Si vous souhaitez réduire le volume et les coûts d'ingestion des journaux, vous pouvez modifier le niveau de journal sur ERROR.  
Pour plus d'informations sur la réduction du volume des journaux, consultez [(En option) Réduction du volume des journaux de Fluent Bit](#ContainerInsights-fluentbit-volume)

1. Validez le déploiement en entrant la commande suivante. Chaque nœud doit avoir un pod nommé **fluent-bit-\$1**.

   ```
   kubectl get pods -n amazon-cloudwatch
   ```

Les étapes ci-dessus créent les ressources suivantes dans le cluster :
+ Un compte de service nommé `Fluent-Bit` dans l'espace de noms `amazon-cloudwatch`. Ce compte de service est utilisé pour exécuter le daemonSet Fluent Bit. Pour plus d'informations, consultez [Managing Service Accounts (Gestion des comptes de service)](https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/) dans la documentation Reference de Kubernetes.
+ Un rôle de cluster rôle nommé `Fluent-Bit-role` dans l'espace de noms `amazon-cloudwatch`. Ce rôle de cluster octroie des autorisations `get`, `list` et `watch` sur les journaux de pod au compte de service `Fluent-Bit`. Pour plus d'informations, consultez [API Overview (Présentation de l'API)](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#api-overview/) dans la documentation Reference de Kubernetes.task
+ Un ConfigMap nommé `Fluent-Bit-config` dans l'espace de `amazon-cloudwatch` noms. Il ConfigMap contient la configuration à utiliser par Fluent Bit. Pour plus d'informations, consultez [Configurer un pod pour utiliser un ConfigMap](https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/) dans la documentation des tâches Kubernetes.

Si vous souhaitez vérifier votre configuration Fluent Bit, procédez comme suit.

**Vérifier la configuration Fluent Bit**

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

1. Dans le panneau de navigation, choisissez **Groupes de journaux**.

1. Assurez-vous que vous êtes dans la région où vous avez déployé Fluent Bit.

1. Vérifiez la liste des groupes de journaux dans la région. Vous devez voir ce qui suit :
   + `/aws/containerinsights/Cluster_Name/application`
   + `/aws/containerinsights/Cluster_Name/host`
   + `/aws/containerinsights/Cluster_Name/dataplane`

1. Accédez à l'un de ces groupes de journaux et cochez la case **Last Event Time (Heure du dernier événement)** pour les flux de journaux. S'il est récent par rapport au moment où vous avez déployé Fluent Bi , la configuration est vérifiée.

   Il peut y avoir un léger retard dans la création du groupe de journaux `/dataplane`. Ceci est normal, car ces groupes de journaux ne sont créés que lorsque Fluent Bit commence à envoyer des journaux pour ce groupe de journaux.

## Prise en charge des journaux multilignes
<a name="ContainerInsights-fluentbit-multiline"></a>

Pour plus d'informations sur l'utilisation de Fluent Bit avec des journaux multilignes, consultez les sections suivantes de la documentation Fluent Bit :
+ [Multiline Parsing](https://docs.fluentbit.io/manual/administration/configuring-fluent-bit/multiline-parsing)
+ [Multiline and Containers (v1.8)](https://docs.fluentbit.io/manual/pipeline/inputs/tail#multiline-and-containers-v1.8)
+ [Multiline Core (v1.8)](https://docs.fluentbit.io/manual/pipeline/inputs/tail#multiline-core-v1.8)
+ [Always use multiline in the tail input](https://github.com/aws/aws-for-fluent-bit/blob/mainline/troubleshooting/debugging.md#always-use-multiline-the-tail-input)

## (En option) Réduction du volume des journaux de Fluent Bit
<a name="ContainerInsights-fluentbit-volume"></a>

Par défaut, nous envoyons les journaux des applications Fluent Bit et les métadonnées Kubernetes à. CloudWatch Si vous souhaitez réduire le volume de données à destination CloudWatch, vous pouvez arrêter l'envoi à l'une de ces sources de données ou aux deux CloudWatch. Si vous avez suivi les étapes décrites sur cette page pour configurer Fluent Bit, téléchargez le fichier YAML du manifeste Kubernetes à partir de la commande kubectl `apply` que vous avez précédemment exécutée et modifiez-le en fonction de vos changements, que vous pouvez ensuite réappliquer à votre cluster. Sinon, si vous utilisez le module complémentaire Amazon CloudWatch Observability EKS ou le graphique Helm, consultez [(Facultatif) Configuration supplémentaire](install-CloudWatch-Observability-EKS-addon.md#install-CloudWatch-Observability-EKS-addon-configuration) pour plus d'informations sur la gestion de la configuration Fluent Bit à l'aide de la configuration avancée du module complémentaire ou du graphique Helm.

Pour arrêter les journaux d'application Fluent Bit, supprimez la section suivante du fichier `Fluent Bit configuration`.

```
[INPUT]
        Name                tail
        Tag                 application.*
        Path                /var/log/containers/fluent-bit*
        Parser              docker
        DB                  /fluent-bit/state/flb_log.db
        Mem_Buf_Limit       5MB
        Skip_Long_Lines     On
        Refresh_Interval    10
```

Pour empêcher l'ajout de métadonnées Kubernetes aux événements de journal envoyés à CloudWatch, ajoutez les filtres suivants à la `application-log.conf` section de la configuration Fluent Bit. Remplacez *<Metadata\$11>* les champs similaires par les identificateurs de métadonnées réels.

```
application-log.conf: |
    [FILTER]
        Name                nest
        Match               application.*
        Operation           lift
        Nested_under        kubernetes
        Add_prefix          Kube.

    [FILTER]
        Name                modify
        Match               application.*
        Remove              Kube.<Metadata_1>
        Remove              Kube.<Metadata_2>
        Remove              Kube.<Metadata_3>
    
    [FILTER]
        Name                nest
        Match               application.*
        Operation           nest
        Wildcard            Kube.*
        Nested_under        kubernetes
        Remove_prefix       Kube.
```

## Résolution des problèmes
<a name="Container-Insights-FluentBit-troubleshoot"></a>

Si vous ne voyez pas ces groupes de journaux et si vous les cherchez dans la bonne région, vérifiez les journaux correspondant aux pods du daemonSet Fluent Bit pour identifier l'erreur.

Exécutez la commande suivante et vérifiez que l'état est `Running`.

```
kubectl get pods -n amazon-cloudwatch
```

Si les journaux contiennent des erreurs liées aux autorisations IAM, vérifiez le rôle IAM qui est attaché au nœuds du cluster. Pour plus d'informations sur les autorisations requises pour exécuter un cluster Amazon EKS, consultez [Politiques, rôles et autorisations IAM Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/IAM_policies.html) dans le *Guide de l'utilisateur Amazon EKS*.

Si l'état du pod est `CreateContainerConfigError`, exécutez la commande suivante pour obtenir l'erreur exacte.

```
kubectl describe pod pod_name -n amazon-cloudwatch
```

## Tableau de bord
<a name="Container-Insights-FluentBit-dashboard"></a>

Vous pouvez créer un tableau de bord pour surveiller les métriques de chaque plugin en cours d'exécution. Vous pouvez consulter les données relatives aux octets d'entrée et de sortie et aux taux de traitement des enregistrements, ainsi que les erreurs et les retry/failed taux de sortie. Pour consulter ces métriques, vous devez installer l' CloudWatch agent avec la collecte de métriques Prometheus pour les clusters Amazon EKS et Kubernetes. Pour plus d'informations sur la configuration du tableau de bord, consultez [Installez l' CloudWatch agent avec la collecte de métriques Prometheus sur les clusters Amazon EKS et KubernetesInstallez l' CloudWatch agent avec la collecte de métriques Prometheus sur les clusters Amazon EKS et Kubernetes](ContainerInsights-Prometheus-Setup.md).

**Note**  
Avant de pouvoir configurer ce tableau de bord, vous devez configurer Container Insights pour les métriques Prometheus. Pour plus d'informations, consultez [Surveillance des métriques Prometheus Container Insights](ContainerInsights-Prometheus.md).

**Pour créer un tableau de bord pour les métriques Prometheus de Fluent Bit**

1. Créez des variables d'environnement, en remplaçant les valeurs à droite dans les lignes suivantes pour correspondre à votre déploiement.

   ```
   DASHBOARD_NAME=your_cw_dashboard_name
   REGION_NAME=your_metric_region_such_as_us-west-1
   CLUSTER_NAME=your_kubernetes_cluster_name
   ```

1. Créez le tableau de bord en exécutant la commande suivante.

   ```
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_cloudwatch_dashboards/fluent-bit/cw_dashboard_fluent_bit.json \
   | sed "s/{{YOUR_AWS_REGION}}/${REGION_NAME}/g" \
   | sed "s/{{YOUR_CLUSTER_NAME}}/${CLUSTER_NAME}/g" \
   | xargs -0 aws cloudwatch put-dashboard --dashboard-name ${DASHBOARD_NAME} --dashboard-body
   ```