Come posso risolvere i problemi di configurazione quando integro Fluent Bit con Container Insights per Amazon EKS?
Desidero risolvere i problemi di configurazione quando integro Fluent Bit con Container Insights per Amazon Elastic Kubernetes Service (Amazon EKS).
Breve descrizione
Fluent Bit è un processore e sistema di inoltro di log leggero che può essere utilizzato per raccogliere i log dei container in Amazon CloudWatch.
È preferibile utilizzare Fluent Bit anziché Fluentd (un programma open source legacy) a causa del suo basso impatto sulle risorse e della funzionalità Use_Kubelet. Per ulteriori informazioni, consulta Attivazione della funzionalità Use_Kubelet per cluster di grandi dimensioni.
Per consentire a Fluent Bit di fornire i log dei container a File di log Amazon CloudWatch, è necessario concedere le autorizzazioni AWS Identity and Access Management (IAM) a Fluent Bit. Con Amazon EKS, esistono due modi per concedere le autorizzazioni IAM:
- Associare una policy al ruolo IAM dei tuoi nodi worker.
- Utilizzare un ruolo di account del servizio IAM.
Se concedi le autorizzazioni IAM a Fluent Bit, Fluent Bit è in grado di eseguire le seguenti azioni:
- logs:DescribeLogGroups
- logs:DescribeLogStreams
- logs:CreateLogGroup
- logs:CreateLogStream
- logs:PutLogEvents
I problemi più comuni includono:
- I pod Fluent Bit vengono arrestati in maniera anomala.
- Fluent Bit non invia i log a CloudWatch.
- I pod Fluent Bit restituiscono CreateContainerConfigError.
Risoluzione
Configurazione di un ruolo IAM per l'account di servizio
Crea un ruolo IAM per l'account del serviziocloudwatch-agent per lo spazio dei nomi amazon-cloudwatch con la policy gestita da AWS CloudWatchAgentServerPolicy.
1. Esegui i seguenti comandi per impostare le variabili di ambiente:
export CLUSTER="clustername" export AWS_REGION="awsregion" export AWS_ACCOUNT="awsaccountid"
Nota: sostituisci "clustername", "awsregion" e "awsaccountid" (comprese le virgolette) con il nome del tuo cluster, la regione AWS e l'ID account.
2. Esegui il seguente comando eksctl:
eksctl create iamserviceaccount \ --name cloudwatch-agent \ --namespace amazon-cloudwatch \ --cluster $CLUSTER \ --attach-policy-arn "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy" \ --approve \ --override-existing-serviceaccounts
Per ulteriori informazioni sui prerequisiti di Container Insights, consulta Verifica dei prerequisiti.
Configurazione dell'agente CloudWatch per raccogliere i parametri del cluster e attivare Container Insights
1. Per implementare Container Insights utilizzando l'avvio rapido, esegui il seguente comando:
ClusterName="my-cluster-name" RegionName="my-cluster-region" FluentBitHttpPort='2020' FluentBitReadFromHead='Off' [[ ${FluentBitReadFromHead} = 'On' ]] && FluentBitReadFromTail='Off'|| FluentBitReadFromTail='On' [[ -z ${FluentBitHttpPort} ]] && FluentBitHttpServer='Off' || FluentBitHttpServer='On' curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch- container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights- monitoring/quickstart/cwagent-fluent-bit-quickstart.yaml | sed 's/ {{cluster_name}}/'${ClusterName}'/;s/ {{region_name}}/'${RegionName}'/;s/ {{http_server_toggle}}/"'${FluentBitHttpServer}'"/;s/ {{http_server_port}}/"'${FluentBitHttpPort}'"/;s/ {{read_from_head}}/"'${FluentBitReadFromHead}'"/;s/ {{read_from_tail}}/"'${FluentBitReadFromTail}'"/' | kubectl apply -f -
Nota: sostituisci "my-cluster-name" e "my-cluster-region" (comprese le virgolette) con il nome del tuo cluster e la tua Regione AWS.
Il comando precedente crea uno spazio dei nomi, ClusterRole, ClusterRoleBinding e ConfigMap per l'agente CloudWatch e Fluent Bit.
2. Dopo l'esecuzione del comando, esegui il comando seguente per creare l'account del servizio Fluent Bit:
eksctl create iamserviceaccount \ --name fluent-bit \ --namespace amazon-cloudwatch \ --cluster $CLUSTER \ --attach-policy-arn "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy" \ --approve \ --override-existing-serviceaccounts
3. Esegui il comando seguente per convalidare l'implementazione dell'agente CloudWatch:
kubectl get pods -n amazon-cloudwatch
4. Al termine, l'agente CloudWatch crea il gruppo di log /aws/containerinsights/cluster_name/performance. Quindi, l'agente CloudWatch invia gli eventi del log delle prestazioni al gruppo di log.
Risoluzione dei problemi
I pod Fluent Bit vengono arrestati in maniera anomala
1. Controlla i messaggi di errore nei log del pod Fluent Bit. Esegui questi comandi per cercare gli eventi dai pod Fluent Bit:
kubectl -n amazon-cloudwatch logs -l k8s-app=fluent-bit kubectl -n amazon-cloudwatch describe pod fluent_pod pod_name
2. Verifica che cluster-info (il file di configurazione Fluent Bit archiviato in ConfigMap) sia preciso e non contenga errori di sintassi. Assicurati che tutti i valori del nome del cluster e della regione siano impostati. Per ulteriori informazioni, consulta amazon-cloudwatch-container-insights sul sito Web di GitHub.
Fluent Bit non invia i log a CloudWatch
1. Verifica che il plug-in di output sia impostato correttamente nel file di configurazione Fluent Bit. Per verificare se ci sono errori di trasferimento dei dati, utilizza il seguente comando per controllare i log del pod Fluent Bit:
kubectl -n amazon-cloudwatch logs fluent_pod_name
2. Assicurati che i pod Fluent Bit dispongano delle autorizzazioni IAM necessarie per lo streaming dei log su CloudWatch. I nodi worker Amazon EKS inviano parametri e log a CloudWatch grazie alla policy CloudWatchAgentServerPolicy applicata da IAM. Esistono due modi per concedere le autorizzazioni IAM necessarie:
- Aggiungere una policy ai ruoli IAM dei nodi worker.
- Creare un ruolo IAM per gli account di servizio del cluster e inserire su di essi la policy.
Per ulteriori informazioni, consulta la sezione Configurazione di un ruolo IAM per l'account di servizio.
I pod Fluent Bit sono bloccati in CreateContainerConfigError
Se lo stato del pod è CreateContainerConfigError, esegui il seguente comando per ottenere il messaggio di errore esatto:
kubectl describe pod pod_name -n amazon-cloudwatch
Nella sezione Events (Eventi) dall'output del comando, cerca un messaggio di errore simile al seguente:
Error syncing pod ("fluent-bit-xxxxxxx"), skipping: failed to "StartContainer" with CreateContain erConfigError: "configmap \"fluent-bit-config\" not found"
Se questo messaggio di errore è presente, è probabile che sia stata creata la ConfigMap per Fluent Bit (fluent-bit-config). Esegui nuovamente la procedura di installazione per assicurarti di creare ConfigMap.
Informazioni correlate
Configurazione dell'agente CloudWatch per raccogliere i parametri del cluster

Contenuto pertinente
- AWS UFFICIALEAggiornata 2 mesi fa
- AWS UFFICIALEAggiornata 4 mesi fa
- AWS UFFICIALEAggiornata 6 mesi fa
- AWS UFFICIALEAggiornata un anno fa