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 DaemonSet per inviare i log ai Logs CloudWatch
Le seguenti sezioni aiutano a implementare Fluent Bit per inviare i log dai contenitori ai Logs. CloudWatch
Argomenti
Differenze se stai già usando Fluentd
Se state già utilizzando Fluentd per inviare i log dai contenitori ai CloudWatch log, leggete questa sezione per vedere le differenze tra Fluentd e Fluent Bit. Se non stai già utilizzando Fluentd con Container Insights, puoi passare a Configurazione di Fluent Bit.
Offriamo due configurazioni predefinite per Fluent Bit:
-
Configurazione ottimizzata di Fluent Bit: una configurazione allineata con le best practice di Fluent Bit.
-
Configurazione compatibile con Fluentd: una configurazione il più possibile allineata al comportamento di Fluentd.
Nell'elenco seguente vengono illustrate in dettaglio le differenze tra Fluentd e ciascuna configurazione di Fluent Bit.
-
Differenze nei nomi dei flussi di log: se utilizzi la configurazione ottimizzata di Fluent Bit, i nomi dei flussi di log saranno diversi.
In
/aws/containerinsights/Cluster_Name/application
-
La configurazione ottimizzata di Fluent Bit invia i log a
kubernetes-nodeName
-application.var.log.containers.kubernetes-podName
_kubernetes-namespace
_kubernetes-container-name
-kubernetes-containerID
-
Fluentd invia i log a
kubernetes-podName
_kubernetes-namespace
_kubernetes-containerName
_kubernetes-containerID
In
/aws/containerinsights/Cluster_Name/host
-
La configurazione ottimizzata di Fluent Bit invia i log a
kubernetes-nodeName
.host-log-file
-
Fluentd invia i log a
host-log-file
-Kubernetes-NodePrivateIp
In
/aws/containerinsights/Cluster_Name/dataplane
-
La configurazione ottimizzata di Fluent Bit invia i log a
kubernetes-nodeName
.dataplaneServiceLog
-
Fluentd invia i log a
dataplaneServiceLog
-Kubernetes-nodeName
-
-
I file di log
kube-proxy
eaws-node
che Container Insights scrive si trovano in posizioni diverse. Nella configurazione di Fluentd, sono in/aws/containerinsights/Cluster_Name/application
. Nella configurazione ottimizzata di Fluent Bit, sono in/aws/containerinsights/Cluster_Name/dataplane
. -
La maggior parte dei metadati ad esempio
pod_name
enamespace_name
sono gli stessi in Fluent Bit e Fluentd, ma i seguenti sono diversi.-
La configurazione ottimizzata Fluent Bit utilizza
docker_id
e Fluentd usaDocker.container_id
. -
Entrambe le configurazioni di Fluent Bit non utilizzano i seguenti metadati. Sono presenti solo in Fluentd:
container_image_id
,master_url
,namespace_id
enamespace_labels
.
-
Configurazione di Fluent Bit
Per configurare Fluent Bit per raccogliere log dai container, puoi seguire le fasi in Configurazione rapida per Container Insights su Amazon EKS e Kubernetes o seguire le fasi in questa sezione.
Con entrambi i metodi, il IAM ruolo collegato ai nodi del cluster deve disporre di autorizzazioni sufficienti. Per ulteriori informazioni sulle autorizzazioni necessarie per gestire un EKS cluster Amazon, consulta Amazon EKS IAM Policies, Roles and Permissions nella Amazon EKS User Guide.
Nei passaggi seguenti, configuri Fluent Bit 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 |
---|---|
|
Tutti i file di log in |
|
I log da |
|
I log in |
Per installare Fluent Bit per inviare i log dai contenitori ai Logs CloudWatch
-
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
-
Esegui il comando seguente per creare un ConfigMap nome
cluster-info
con il nome del cluster e la regione a cui inviare i log. Replace (Sostituisci)cluster-name
ecluster-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-cloudwatchIn questo comando, il
FluentBitHttpServer
per il monitoraggio dei parametri dei plugin è attivo per impostazione predefinita. Per disattivarlo, cambia la terza riga del comando inFluentBitHttpPort=''
(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. -
Scarica e implementa il daemonset Fluent BIt nel cluster eseguendo uno dei seguenti comandi.
-
Se desideri la configurazione ottimizzata di Fluent Bit per computer 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 ottimizzata di Fluent Bit per computer 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 utilizzi computer Linux e desideri una configurazione Fluent Bit 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 suINFO, il che può comportare costi di ingestione dei log più elevati. CloudWatch Se si desidera ridurre il volume e i costi di acquisizione dei log, è possibile modificare il livello di registro in. ERROR
Per ulteriori informazioni sulla riduzione del volume di log, consulta Riduzione del volume di log da Fluent Bit (facoltativo)
-
-
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 nomiamazon-cloudwatch
. Questo account di servizio viene utilizzato per eseguire Fluent Bit. daemonSet Per ulteriori informazioni, consulta Gestione degli account di servizionella documentazione di riferimento di Kubernetes. -
Un ruolo cluster denominato
Fluent-Bit-role
nello spazio dei nomiamazon-cloudwatch
. Questo ruolo di cluster concede le autorizzazioniget
,list
ewatch
sui log di pod all'account di servizioFluent-Bit
. Per ulteriori informazioni, consulta APIPanoramicanel Kubernetes Reference. -
Un ConfigMap nome
Fluent-Bit-config
nel namespace.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 diKubernetes Tasks.
Se si desidera verificare la configurazione di Fluent Bit, procedi come segue.
Verifica l'impostazione di Fluent Bit
Apri la console all' CloudWatch indirizzo. https://console.aws.amazon.com/cloudwatch/
-
Nel pannello di navigazione, selezionare Log groups (Gruppi di log).
-
Assicurati di trovarti nella regione in cui è stato implementato Fluent Bit.
-
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
-
-
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, 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 in questa pagina per configurare Fluent Bit, scarica il YAML file manifest di Kubernetes dal apply
comando kubectl che hai eseguito in precedenza e modificalo con le modifiche, che puoi quindi riapplicare al tuo cluster. In alternativa, se utilizzi il EKS componente aggiuntivo Amazon CloudWatch Observability 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 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 di 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
Replace (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 vedi questi gruppi di log e stai cercando nella regione corretta, controlla i log dei daemonSet pod Fluent Bit per cercare l'errore.
Esegui il comando seguente e accertati che lo stato sia Running
.
kubectl get pods -n amazon-cloudwatch
Se i log presentano errori relativi alle IAM autorizzazioni, controlla il IAM ruolo associato ai nodi del cluster. Per ulteriori informazioni sulle autorizzazioni necessarie per gestire un EKS cluster Amazon, consulta Amazon EKS IAM Policies, Roles and Permissions nella Amazon EKS User Guide.
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, dovrai installare l' CloudWatch agente con la raccolta di metriche Prometheus per i cluster Amazon e Kubernetes. EKS Per ulteriori informazioni su come configurare il pannello di controllo, consulta Installa l' CloudWatch agente con la raccolta di metriche Prometheus sui cluster Amazon e Kubernetes EKS.
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
-
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
-
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