

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Configura Fluent Bit come per inviare log a Logs DaemonSet CloudWatch
<a name="Container-Insights-setup-logs-FluentBit"></a>

Le seguenti sezioni aiutano a implementare Fluent Bit per inviare i log dai contenitori ai Logs. CloudWatch 

**Topics**
+ [Configurazione di Fluent Bit](#Container-Insights-FluentBit-setup)
+ [Supporto per log multi-linea](#ContainerInsights-fluentbit-multiline)
+ [Riduzione del volume di log da Fluent Bit (facoltativo)](#ContainerInsights-fluentbit-volume)
+ [Risoluzione dei problemi](#Container-Insights-FluentBit-troubleshoot)
+ [Pannello di controllo](#Container-Insights-FluentBit-dashboard)

## Configurazione di Fluent Bit
<a name="Container-Insights-FluentBit-setup"></a>

Per configurare Fluent Bit per raccogliere log dai container, puoi seguire le fasi in [Configurazione di Quick Start per Container Insights su Amazon EKS e Kubernetes](Container-Insights-setup-EKS-quickstart.md) o seguire le fasi in questa sezione.

Con entrambi i metodi, il ruolo IAM collegato ai nodi del cluster deve disporre di autorizzazioni sufficienti. Per ulteriori informazioni sulle autorizzazioni necessarie per l'esecuzione di un cluster Amazon EKS, consulta [Policy, ruoli e autorizzazioni IAM di Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/IAM_policies.html) nella *Guida per l'utente Amazon EKS*.

Nei passaggi seguenti, configuri Fluent Bit come DaemOnset per inviare i log ai Logs. CloudWatch Una volta completata questa fase, Fluent Bit crea i seguenti gruppi di log se non esistono già.

**Importante**  
Se hai già configurato FluentD in Container Insights e FluentD non funziona come previsto (questo può succedere se usi `containerd` il runtime), devi disinstallarlo prima di installare DaemonSet Fluent Bit per evitare che FluentBit elabori i messaggi di registro degli errori FluentD. Altrimenti, è necessario disinstallare FluentD immediatamente dopo aver installato con successo Fluent Bit. La disinstallazione di Fluentd dopo l'installazione di Fluent Bit garantisce la continuità della registrazione durante questo processo di migrazione. È necessario solo uno tra Fluent Bit o FluentD per inviare i log ai Logs. CloudWatch 


| Nome del gruppo di log | Origine del log | 
| --- | --- | 
|  `/aws/containerinsights/Cluster_Name/application`  |  Tutti i file di log in `/var/log/containers`  | 
|  `/aws/containerinsights/Cluster_Name/host`  |  I log da `/var/log/dmesg`, `/var/log/secure` e `/var/log/messages`  | 
|  `/aws/containerinsights/Cluster_Name/dataplane`  |  I log in `/var/log/journal` per `kubelet.service` `kubeproxy.service` e `docker.service`.  | 

**Per installare Fluent Bit per inviare i log dai contenitori ai Logs CloudWatch**

1. Se non hai già uno spazio dei nomi chiamato `amazon-cloudwatch`, creane uno inserendo il seguente comando:

   ```
   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. Esegui il comando seguente per creare un ConfigMap nome `cluster-info` con il nome del cluster e la regione a cui inviare i log. Sostituisci *cluster-name* e *cluster-region* con il nome e la regione del 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
   ```

   In questo comando, il `FluentBitHttpServer` per il monitoraggio dei parametri dei plugin è attivo per impostazione predefinita. Per disattivarlo, cambia la terza riga del comando in `FluentBitHttpPort=''` (stringa vuota) nel comando.

   Inoltre, per impostazione predefinita, Fluent Bit legge i file di log dalla coda e acquisisce solo i nuovi log dopo che è stato implementato. Se avere l'effetto contrario, imposta `FluentBitReadFromHead='On'` e raccoglierà tutti i log nel file system.

1. Scarica e implementa il daemonset Fluent BIt nel cluster eseguendo uno dei seguenti comandi.
   + Se desideri la configurazione Fluent Bit ottimizzata per computer con Linux, esegui questo comando.

     ```
     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
     ```
   + Se desideri la configurazione Fluent Bit ottimizzata per computer con Windows, esegui questo comando.

     ```
     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
     ```
   + Se stai utilizzando computer con Linux e desideri che la configurazione Fluent Bit sia più simile a Fluentd, esegui questo comando.

     ```
     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
     ```
**Importante**  
La configurazione del daemset Fluent Bit di default imposta il livello di registro su INFO, il che può comportare costi di inserimento dei CloudWatch log più elevati. Se si desidera ridurre il volume e i costi di importazione dei log, è possibile modificare il livello di registrazione in ERROR.  
Per ulteriori informazioni sulla riduzione del volume di log, consulta [Riduzione del volume di log da Fluent Bit (facoltativo)](#ContainerInsights-fluentbit-volume)

1. Convalida l'implementazione immettendo il seguente comando. Ogni nodo deve avere un pod denominato **fluent-bit-\$1**.

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

Le fasi precedenti creano le seguenti risorse nel cluster:
+ Un account di servizio denominato `Fluent-Bit` nello spazio dei nomi `amazon-cloudwatch`. Questo account di servizio viene utilizzato per eseguire il DaemonSet Fluent Bit. Per ulteriori informazioni, consulta [Gestione degli account di servizio](https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/) nella documentazione di riferimento di Kubernetes.
+ Un ruolo cluster denominato `Fluent-Bit-role` nello spazio dei nomi `amazon-cloudwatch`. Questo ruolo di cluster concede le autorizzazioni `get`, `list` e `watch` sui log di pod all'account di servizio `Fluent-Bit`. Per ulteriori informazioni, consulta [Panoramica delle API](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#api-overview/) nella documentazione di riferimento di Kubernetes.
+ Un nome nel namespace. ConfigMap `Fluent-Bit-config` `amazon-cloudwatch` ConfigMap Contiene la configurazione che deve essere utilizzata da Fluent Bit. Per ulteriori informazioni, consulta [Configurare un pod per utilizzare a ConfigMap nella documentazione di](https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/) Kubernetes Tasks.

Se si desidera verificare la configurazione di Fluent Bit, procedi come segue.

**Verifica l'impostazione di Fluent Bit**

1. Apri la console all' CloudWatch indirizzo. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)

1. Nel pannello di navigazione, selezionare **Log groups (Gruppi di log)**.

1. Assicurati di trovarti nella regione in cui è stato implementato Fluent Bit.

1. Controlla l'elenco dei gruppi di log nella regione. Verrà visualizzato un codice analogo al seguente:
   + `/aws/containerinsights/Cluster_Name/application`
   + `/aws/containerinsights/Cluster_Name/host`
   + `/aws/containerinsights/Cluster_Name/dataplane`

1. Passa a uno di questi gruppi di log e controlla **Last Event Time** (Ora ultimo evento) per i flussi di log. Se è recente rispetto a quando è stato implementato Fluent Bit, l'installazione viene verificata.

   Potrebbe esserci un leggero ritardo nella creazione del gruppo di log `/dataplane`. Questo è normale in quanto questi gruppi di log vengono creati solo quando Fluent Bit inizia a inviare i log per quel gruppo di log.

## Supporto per log multi-linea
<a name="ContainerInsights-fluentbit-multiline"></a>

Per informazioni su come utilizzare Fluent Bit con log multi-linea, consulta le sezioni della documentazione di Fluent Bit riportate di seguito.
+ [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)

## Riduzione del volume di log da Fluent Bit (facoltativo)
<a name="ContainerInsights-fluentbit-volume"></a>

Per impostazione predefinita, inviamo i log delle applicazioni Fluent Bit e i metadati Kubernetes a. CloudWatch Se desideri ridurre il volume di dati a cui inviare CloudWatch, puoi impedire l'invio a una o entrambe queste fonti di dati. CloudWatch Se hai seguito i passaggi di questa pagina per configurare Fluent Bit, scarica il file manifesto YAML di Kubernetes dal comando kubectl `apply` eseguito in precedenza, apporta le modifiche necessarie e riapplicalo al cluster. In alternativa, se utilizzi il componente aggiuntivo Amazon CloudWatch Observability EKS o il grafico Helm, consulta [(Facoltativo) Configurazione aggiuntiva](install-CloudWatch-Observability-EKS-addon.md#install-CloudWatch-Observability-EKS-addon-configuration) per informazioni sulla gestione della configurazione Fluent Bit utilizzando la configurazione avanzata del componente aggiuntivo o il diagramma Helm.

Per arrestare i log dell'applicazione Fluent Bit, rimuovi la sezione seguente dal file `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
```

Per evitare che i metadati Kubernetes vengano aggiunti agli eventi di registro a cui vengono inviati CloudWatch, aggiungi i seguenti filtri alla sezione della configurazione Fluent Bit. `application-log.conf` Sostituisci *<Metadata\$11>* e i campi simili con gli identificatori di metadati effettivi.

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

## Risoluzione dei problemi
<a name="Container-Insights-FluentBit-troubleshoot"></a>

Se non visualizzi questi gruppi di log e stai controllando nella regione corretta, controllare i log per i pod daemonSet Fluent Bit per individuare l'errore.

Esegui il comando seguente e accertati che lo stato sia `Running`.

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

Se i log contengono errori correlati alle autorizzazioni IAM, controlla il ruolo IAM collegato ai nodi del cluster. Per ulteriori informazioni sulle autorizzazioni necessarie per l'esecuzione di un cluster Amazon EKS, consulta [Policy, ruoli e autorizzazioni IAM di Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/IAM_policies.html) nella *Guida per l'utente Amazon EKS*.

Se lo stato del pod è `CreateContainerConfigError`, ottieni l'errore preciso eseguendo il seguente comando.

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

## Pannello di controllo
<a name="Container-Insights-FluentBit-dashboard"></a>

Puoi creare un pannello di controllo per monitorare i parametri di ciascun plug-in in esecuzione. È possibile visualizzare i dati per i byte di input e output e per le velocità di elaborazione record, nonché gli errori e le frequenze di output. retry/failed Per visualizzare questi parametri, dovrai installare l' CloudWatch agente con la raccolta di metriche Prometheus per i cluster Amazon EKS e Kubernetes. Per ulteriori informazioni su come configurare il pannello di controllo, consulta [Installa l' CloudWatch agente con la raccolta di metriche Prometheus sui cluster Amazon EKS e KubernetesInstalla l' CloudWatch agente con la raccolta di metriche Prometheus sui cluster Amazon EKS e Kubernetes](ContainerInsights-Prometheus-Setup.md).

**Nota**  
Prima di configurare questo pannello di controllo, è necessario impostare Container Insights per i parametri Prometheus. Per ulteriori informazioni, consulta la pagina [Monitoraggio dei parametri di Container Insights Prometheus](ContainerInsights-Prometheus.md).

**Per creare un pannello di controllo per i parametri Prometheus di Fluent Bit**

1. Crea variabili di ambiente, sostituendo i valori a destra nelle righe seguenti in modo che corrispondano all'implementazione.

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

1. Crea il pannello di controllo eseguendo il comando seguente.

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