Configurazione di Fluent Bit come DaemonSet per inviare i log a CloudWatch Logs - Amazon CloudWatch

Configurazione di Fluent Bit come DaemonSet per inviare i log a CloudWatch Logs

Le sezioni seguenti consentono di implementare Fluent Bit per inviare i log dai container a CloudWatch Logs.

Configurazione di Fluent Bit

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 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 nella Guida per l'utente Amazon EKS.

Nelle fasi successive, puoi impostare Fluent Bit come daemonSet per inviare i log a CloudWatch Logs. Una volta completata questa fase, Fluent Bit crea i seguenti gruppi di log se non esistono già.

Importante

Se hai già configurato FluentD in Approfondimenti sui container e FluentD DaemonSet non funziona come previsto (questo può accadere se si utilizza il runtime containerd), è necessario disinstallarlo prima di installare Fluent Bit per evitare che Fluent Bit elabori i messaggi del log di 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. Solo un Fluent Bit o FluentD è necessario per inviare i log a File di log 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 container a CloudWatch Logs
  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
  2. Esegui il comando seguente per creare un ConfigMap denominato 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.

  3. 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 daemonset Fluent Bit di default imposta il livello di log su INFO, il che può comportare costi di importazione di File di log CloudWatch 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)

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

    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 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 nella documentazione di riferimento di Kubernetes.

  • Un ConfigMap denominato Fluent-Bit-config nello spazio dei nomi amazon-cloudwatch. Questo ConfigMap contiene la configurazione che Fluent Bit deve usare. Per ulteriori informazioni, consulta Configurazione di un pod per l'uso di un ConfigMap nella documentazione relativa ai task di Kubernetes.

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

Verifica l'impostazione di Fluent Bit
  1. Apri la console CloudWatch all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Nel pannello di navigazione, seleziona Log groups (Gruppi di log).

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

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

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

Per informazioni su come utilizzare Fluent Bit con log multi-linea, consulta le sezioni della documentazione di Fluent Bit riportate di seguito.

Riduzione del volume di log da Fluent Bit (facoltativo)

Per impostazione predefinita, i log delle applicazioni Fluent Bit e i metadati Kubernetes vengono inviati a CloudWatch. Se si desidera ridurre il volume di dati inviati a CloudWatch, puoi interrompere l'invio di una o entrambe queste origini dati a 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 per informazioni sulla gestione della configurazione Fluent Bit utilizzando la configurazione avanzata del componente aggiuntivo o il grafico 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 rimuovere l'aggiunta dei metadati Kubernetes agli eventi di log che vengono inviati a CloudWatch, aggiungi i seguenti filtri alla sezione application-log.conf nella configurazione Fluent Bit. Sostituisci <Metadata_1> 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

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

Dashboard

Puoi creare un pannello di controllo per monitorare i parametri di ciascun plug-in in esecuzione. Puoi visualizzare i dati per i byte di input e output e per le velocità di elaborazione dei record, nonché gli errori di output e le percentuali di nuovi tentativi/fallimenti. Per visualizzare questi parametri, è necessario installare l'agente CloudWatch con la raccolta dei parametri Prometheus per i cluster Amazon EKS e Kubernetes. Per ulteriori informazioni su come configurare il pannello di controllo, consulta Installazione dell'agente CloudWatch con la raccolta deli parametri Prometheus sui cluster Amazon EKS e Kubernetes.

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.

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