Contribuisci a migliorare questa pagina
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à.
Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina su che si trova nel riquadro destro di ogni pagina.
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à.
Start (Avvio) AWS Registrazione Fargate per il tuo cluster
Amazon EKS su Fargate offre un router di registro integrato basato su Fluent Bit. Ciò significa che non viene eseguito esplicitamente un container Fluent Bit come sidecar, ma è Amazon a eseguirlo. Tutto quello che devi fare è configurare il router di log. La configurazione avviene attraverso un ConfigMap dedicato che deve soddisfare i seguenti criteri:
-
Deve essere denominato
aws-logging -
Creato in un namespace dedicato denominato
aws-observability -
Non può contenere più di 5.300 caratteri.
Una volta creato ConfigMap, Amazon EKS su Fargate lo rileva in automatico e lo utilizza per configurare il router di log. Fargate utilizza una versione di AWS for Fluent Bit, una distribuzione conforme agli standard upstream di Fluent Bit gestita da. AWS Per ulteriori informazioni, vedere Fluent Bit on. AWS
Il router di log consente di utilizzare l'ampia gamma di servizi di at AWS per l'analisi e l'archiviazione dei log. Puoi trasmettere i log da Fargate direttamente ad Amazon CloudWatch e Amazon Service. OpenSearch È possibile trasmettere i log anche a destinazioni come Amazon S3
-
Un profilo Fargate esistente che specifichi un namespace Kubernetes esistente in cui si implementano i pod Fargate. Per ulteriori informazioni, consulta Fase 3: creare un profilo Fargate per il cluster.
-
Un ruolo di esecuzione del pod Fargate esistente. Per ulteriori informazioni, consulta Fase 2: creare un ruolo di esecuzione del pod Fargate.
Configurazione del router di log
Importante
Affinché i log vengano pubblicati correttamente, deve essere possibile accedere alla rete dal VPC in cui si trova il cluster alla destinazione dei log. Ciò riguarda principalmente gli utenti che personalizzano le regole di uscita per il VPC. Per un esempio di utilizzo CloudWatch, consulta Using CloudWatch Logs with interface VPC endpoints nella Amazon CloudWatch Logs User Guide.
Nei passaggi che seguono, sostituire example value con i propri valori.
-
Creare un namespace Kubernetes dedicato denominato
aws-observability.-
Salva nel tuo computer i seguenti contenuti in un file denominato
aws-observability-namespace.yaml. Il valore pernamedeve essereaws-observabilitye l'etichettaaws-observability: enabledè obbligatoria.kind: Namespace apiVersion: v1 metadata: name: aws-observability labels: aws-observability: enabled -
Crea il namespace.
kubectl apply -f aws-observability-namespace.yaml
-
-
Crea una
ConfigMapcon valore dei datiFluent Confper spedire i log del container verso una destinazione. Fluent Conf è Fluent Bit, un linguaggio di configurazione del processore di log veloce e leggero che viene utilizzato per instradare i log del container verso una destinazione di log selezionata. Per ulteriori informazioni, consultare File di configurazionenella documentazione di Fluent Bit. Importante
In una
Fluent Conftipica, le sezioni principali incluse sonoService,Input,FiltereOutput. Tuttavia, il router di log di Fargate accetta solo:-
Le sezioni
FiltereOutput. -
Una sezione
Parser.
Se fornisci altre sezioni, queste verranno rifiutate.
Il router di log Fargate gestisce le sezioni
ServiceeInput. Ha la sezioneInputseguente, che non può essere modificata e non è necessaria inConfigMap. Tuttavia, è possibile ricavarne informazioni, ad esempio il limite del buffer di memoria e il tag applicato per i log.[INPUT] Name tail Buffer_Max_Size 66KB DB /var/log/flb_kube.db Mem_Buf_Limit 45MB Path /var/log/containers/*.log Read_From_Head On Refresh_Interval 10 Rotate_Wait 30 Skip_Long_Lines On Tag kube.*Quando crei la
ConfigMap, ricorda le seguenti regole utilizzate da Fargate per convalidare i campi:-
[FILTER],[OUTPUT], e[PARSER]dovrebbero essere specificati sotto ogni chiave corrispondente. Ad esempio:[FILTER]deve essere infilters.conf. È possibile avere uno o più[FILTER]infilters.conf. Anche le sezioni[OUTPUT]e[PARSER]dovrebbero essere specificate sotto le chiavi corrispondenti. Specificando più sezioni[OUTPUT], è possibile instradare i registritha a destinazioni diverse contemporaneamente. -
Fargate convalida le chiavi richieste per ogni sezione.
Nameematchsono necessari per ogni[FILTER]e[OUTPUT].Nameeformatsono necessari per ogni[PARSER]. Le chiavi non fanno distinzione tra maiuscole e minuscole. -
Variabili di ambiente come
${ENV_VAR}non sono ammesse inConfigMap. -
L'indentazione deve essere la stessa per la direttiva o per la coppia chiave-valore all'interno di ciascuna, e.
filters.confoutput.confparsers.confKey-value le coppie devono essere indentate più delle direttive. -
Fargate effettua la convalida in base ai seguenti filtri supportati:
grep,parser,record_modifier,rewrite_tag,throttle,nest,modifyekubernetes. -
Fargate effettua la convalida in base al seguente output supportato:
es,firehose,kinesis_firehose,cloudwatch,cloudwatch_logs, ekinesis. -
In
ConfigMapdeve essere fornito almeno un pluginOutputsupportato per abilitare la registrazione di log.FiltereParsernon sono necessari per abilitarla.È possibile anche eseguire Fluent Bit su Amazon EC2 utilizzando la configurazione desiderata per risolvere eventuali problemi derivanti dalla convalida. Crea il
ConfigMaputilizzando uno degli esempi seguenti.Importante
La registrazione di log Fargate di Amazon EKS non supporta la configurazione dinamica di
ConfigMap. Eventuali modifiche aConfigMapvengono applicate solo ai nuovi pod. Le modifiche non vengono applicate ai pod esistenti.Crea un
ConfigMaputilizzando l'esempio per la destinazione di log desiderata.Nota
Puoi anche utilizzare Flusso di dati Amazon Kinesis come destinazione dei log. Se utilizzi Flusso di dati Kinesis, assicurati che al ruolo di esecuzione del pod sia stata concessa l'autorizzazione
kinesis:PutRecords. Per ulteriori informazioni, consulta la sezione Permissionsrelativa a flusso di dati Amazon Kinesis in Fluent Bit: Official Manual.
Esempio
-
-
Configurare le autorizzazioni per il ruolo di esecuzione del pod Fargate per inviare log alla destinazione.
-
Eseguire il download della policy IAM per la destinazione sul computer.
Esempio
-
Creare una policy IAM utilizzando il file della policy scaricato nella fase precedente.
aws iam create-policy --policy-name eks-fargate-logging-policy --policy-document file://permissions.json -
Collega la policy IAM al ruolo di esecuzione del pod specificato per il profilo Fargate con il seguente comando. Sostituisci
111122223333con l'ID del tuo account. SostituisciloAmazonEKSFargatePodExecutionRolecon il tuo ruolo di esecuzione del Pod (per ulteriori informazioni, consultaFase 2: creare un ruolo di esecuzione del pod Fargate).aws iam attach-role-policy \ --policy-arn arn:aws: iam::111122223333:policy/eks-fargate-logging-policy \ --role-nameAmazonEKSFargatePodExecutionRole
-
Supporto filtri Kubernetes
Il filtro Fluent Bit Kubernetes consente di aggiungere metadati Kubernetes ai file di log. Per ulteriori informazioni sul filtro, consultare Kubernetes
filters.conf: | [FILTER] Name kubernetes Match kube.* Merge_Log On Buffer_Size 0 Kube_Meta_Cache_TTL300s
Importante
-
Kube_URL,Kube_CA_File,Kube_Token_CommandeKube_Token_Filesono parametri di configurazione di proprietà del servizio e non devono essere specificati. Amazon EKS Fargate popola questi valori. -
Kube_Meta_Cache_TTLè il momento in cui Fluent Bit attende il momento in cui comunica al server API i metadati più recenti. SeKube_Meta_Cache_TTLnon è specificato, Amazon EKS Fargate aggiunge un valore predefinito di 30 minuti per ridurre il carico sul server API.
Per inviare log di processo Fluent Bit all’account
Facoltativamente, puoi inviare i log dei processi di Fluent Bit ad Amazon CloudWatch utilizzando quanto segue. ConfigMap La spedizione dei log di processo di Fluent Bit CloudWatch richiede costi aggiuntivi di inserimento e archiviazione dei log. Sostituisci region-code con la AWS regione in cui si trova il cluster.
kind: ConfigMap apiVersion: v1 metadata: name: aws-logging namespace: aws-observability labels: data: # Configuration files: server, input, filters and output # ====================================================== flb_log_cw: "true" # Ships Fluent Bit process logs to CloudWatch. output.conf: | [OUTPUT] Name cloudwatch Match kube.* regionregion-codelog_group_name fluent-bit-cloudwatch log_stream_prefix from-fluent-bit- auto_create_group true
I log si trovano CloudWatch nella stessa AWS regione del cluster. Il nome del gruppo di log è
e il nome del flusso di log Fluent Bit è my-cluster-fluent-bit-logsfluent-bit-.podname-pod-namespace
Nota
-
I log dei processi vengono spediti solo quando il processo Fluent Bit viene avviato correttamente. Se si verifica un errore durante l'avvio di Fluent Bit, i log di processo vengono mancati. È possibile inviare i log dei processi solo a CloudWatch.
-
Per eseguire il debug della spedizione dei log di processo sull’account, è possibile applicare la
ConfigMapprecedente per ottenere i log di processo. Il mancato avvio di Fluent Bit solitamente è dovuto al fatto che laConfigMapnon viene analizzata o accettata da Fluent Bit durante l'avvio.
Per interrompere l’invio dei log di processo Fluent Bit
La spedizione dei log di processo di Fluent Bit CloudWatch richiede costi aggiuntivi di inserimento e archiviazione dei log. Per escludere i registri dei processii in una configurazione ConfigMap esistente, effettua le seguenti operazioni.
-
Individua il gruppo di CloudWatch log creato automaticamente per i log di processo Fluent Bit del tuo cluster Amazon EKS dopo aver abilitato la registrazione di Fargate. Segue il formato
.my-cluster-fluent-bit-logs -
Elimina i flussi di CloudWatch log esistenti creati per i log di processo di ciascun Pod nel gruppo di log. CloudWatch
-
Modifica la
ConfigMape impostaflb_log_cw: "false". -
Riavviare tutti i pod esistenti nel cluster.
Applicazione di prova
-
Implementare un pod di esempio.
-
Salva nel tuo computer i seguenti contenuti in un file denominato
sample-app.yaml.apiVersion: apps/v1 kind: Deployment metadata: name: sample-app namespace:same-namespace-as-your-fargate-profilespec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - name: http containerPort: 80 -
Applica il file manifesto al cluster.
kubectl apply -f sample-app.yaml
-
-
Visualizza i log NGINX utilizzando la/le destinazione/i configurata/e nel
ConfigMap.
Considerazioni sulle dimensioni
Si consiglia di pianificare fino a 50 MB di memoria per il router di log. Se prevedi che l'applicazione generi registri a velocità di trasmissione effettiva molto elevata, dovresti pianificarla fino a 100 MB.
Risoluzione dei problemi
Per confermare se la funzionalità di registrazione di log è abilitata o disabilitata per qualche motivo, ad esempio per una ConfigMap non valida, e perché questa non è valida, controllare gli eventi pod con kubectl describe pod . L’output potrebbe includere eventi pod che chiariscono se la registrazione di log è abilitata o meno, ad esempio l’output di esempio seguente.pod-name
[...] Annotations: CapacityProvisioned: 0.25vCPU 0.5GB Logging: LoggingDisabled: LOGGING_CONFIGMAP_NOT_FOUND [...] Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning LoggingDisabled <unknown> fargate-scheduler Disabled logging because aws-logging configmap was not found. configmap "aws-logging" not found
Gli eventi di pod sono effimeri, con un periodo di tempo che dipende dalle impostazioni. È inoltre possibile visualizzare le annotazioni di un pod tramite kubectl describe pod . Nell’annotazione del pod, è possibile sapere se, e per quale motivo, la funzionalità di registrazione di log è abilitata o disabilitata.pod-name