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à.
Logging di Fargate
Importante
AWS Fargate con Amazon EKS non è disponibile negli AWS GovCloud Stati Uniti orientali e AWS GovCloud negli Stati Uniti occidentali.
Amazon EKS su Fargate offre un router di log integrato basato su Fluent Bit. Ciò significa che non esegui esplicitamente un container Fluent Bit come sidecar, ma Amazon lo gestisce per te. 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 uno spazio dei nomi dedicato denominato
aws-observability
-
Non può contenere più di 5.300 caratteri.
Una volta creato il ConfigMap
, Amazon EKS su Fargate lo rileva in automatico e con esso configura il router di log. Fargate utilizza una versione di AWS forFluent Bit, una distribuzione conforme a upstream di managed by. Fluent Bit AWS Per ulteriori informazioni, vedere for on. AWSFluent Bit
Il log router consente di utilizzare l'ampia gamma di servizi AWS per l'analisi e l'archiviazione dei log. Puoi trasmettere i log da Fargate direttamente ad Amazon CloudWatch, Amazon OpenSearch Service. Puoi anche trasmettere i log verso destinazioni come Amazon S3, Amazon
Prerequisiti
-
Un profilo Fargate esistente che specifica uno spazio dei nomi Kubernetes esistente in cui si implementano i Pods Fargate. Per ulteriori informazioni, consulta Creazione di un profilo Fargate per il cluster.
-
Il ruolo di esecuzione del Pod Fargate esistente. Per ulteriori informazioni, consulta Creazione di un ruolo di esecuzione del Pod Fargate.
Configurazione del router di log
Configurazione del router di log
Nelle fasi seguenti, sostituisci
con i valori in tuo possesso.example value
-
Crea uno spazio dei nomi Kubernetes dedicato denominato
aws-observability
.-
Salva nel tuo computer i seguenti contenuti in un file denominato
. Il valore peraws-observability-namespace
.yamlname
deve essereaws-observability
e l'etichettaaws-observability: enabled
è obbligatoria.kind: Namespace apiVersion: v1 metadata: name: aws-observability labels: aws-observability: enabled
-
Crea lo spazio dei nomi.
kubectl apply -f
aws-observability-namespace
.yaml
-
-
Crea una
ConfigMap
con valore dei datiFluent Conf
per spedire i log del container verso una destinazione. Fluent Conf è Fluent Bit, un linguaggio di configurazione del processore di log veloce e leggero utilizzato per instradare i registri del container verso una destinazione di registro selezionata. Per ulteriori informazioni, consulta File di configurazionenella documentazione di Fluent Bit. Importante
In una
Fluent Conf
tipica, le sezioni principali incluse sonoService
,Input
,Filter
eOutput
. Tuttavia, il router di log di Fargate accetta solo:-
Le sezioni
Filter
eOutput
. -
Una sezione
Parser
.
Se fornisci altre sezioni, queste verranno rifiutate.
Il router di log Fargate gestisce le sezioni
Service
eInput
. Ha la sezioneInput
seguente, che non può essere modificata e non è necessaria nel tuoConfigMap
. 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.
Name
ematch
sono necessari per ogni[FILTER]
e[OUTPUT]
.Name
eformat
sono necessari per ogni[PARSER]
. Le chiavi non fanno distinzione tra maiuscole e minuscole. -
Variabili di ambiente come
${ENV_VAR}
non sono ammesse nellaConfigMap
. -
La rientranza deve essere la stessa sia per la direttiva che per la coppia chiave-valore all'interno di ogni
filters.conf
,output.conf
eparsers.conf
. Le coppie chiave-valore devono essere rientranti piuttosto che direttive. -
Fargate effettua la convalida in base ai seguenti filtri supportati:
grep
,parser
,record_modifier
,rewrite_tag
,throttle
,nest
,modify
ekubernetes
. -
Fargate effettua la convalida in base al seguente output supportato:
es
,firehose
,kinesis_firehose
,cloudwatch
,cloudwatch_logs
, ekinesis
. -
Nella
ConfigMap
deve essere fornito almeno un plug-inOutput
supportato per abilitare il logging.Filter
eParser
non sono necessari per abilitare il logging.
È possibile anche eseguire Fluent Bit su Amazon EC2 utilizzando la configurazione desiderata per risolvere eventuali problemi derivanti dalla convalida. Crea il
ConfigMap
utilizzando uno degli esempi seguenti.Importante
Il logging Fargate di Amazon EKS non supporta la configurazione dinamica di
ConfigMaps
. Eventuali modifiche aConfigMaps
vengono applicate solo ai nuovi Pods. Le modifiche non vengono applicate ai Pods esistenti.Crea un
ConfigMap
utilizzando 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 Autorizzazioni di Flusso di dati Amazon Kinesis inFluent Bit: Manuale ufficiale. -
-
Crea 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
con l'ID del tuo account. Sostituisci111122223333
con il ruolo di esecuzione del Pod (per ulteriori informazioni, consulta Creazione di un ruolo di esecuzione del Pod Fargate).AmazonEKSFargatePodExecutionRole
aws iam attach-role-policy \ --policy-arn arn:aws:iam::
111122223333
:policy/eks-fargate-logging-policy
\ --role-nameAmazonEKSFargatePodExecutionRole
Supporto filtri Kubernetes
Questa funzionalità richiede la versione di Kubernetes minima e il livello di piattaforma riportati di seguito o successivi.
Versione Kubernetes | Livello di piattaforma |
---|---|
1.23 e versioni successive | eks.1 |
Il filtro Fluent Bit Kubernetes consente di aggiungere metadati Kubernetes ai file di log. Per ulteriori informazioni sul filtro, consulta Kubernetes
filters.conf: | [FILTER] Name kubernetes Match kube.* Merge_Log On Buffer_Size 0 Kube_Meta_Cache_TTL
300
s
Importante
-
Kube_URL
,Kube_CA_File
,Kube_Token_Command
eKube_Token_File
sono parametri di configurazione di proprietà del servizio e non devono essere specificati. Amazon EKS Fargate popola tali valori. -
Kube_Meta_Cache_TTL
è il momento in cui Fluent Bit attende di comunicare i metadati più recenti al server API. SeKube_Meta_Cache_TTL
non è specificato, Amazon EKS Fargate aggiunge un valore predefinito di 30 minuti per ridurre il carico sul server API.
Invio dei log di processo Fluent Bit all'account
Facoltativamente, puoi spedire i log dei Fluent Bit processi ad Amazon CloudWatch utilizzando quanto segue. ConfigMap
La spedizione dei log di processo Fluent Bit a CloudWatch richiede costi aggiuntivi di inserimento e archiviazione dei log. Sostituiscilo
con Regione AWS quello in cui si trova il tuo cluster.region-code
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.* region
region-code
log_group_name fluent-bit-cloudwatch log_stream_prefix from-fluent-bit- auto_create_group true
I log si trovano nell'area in Regione AWS cui risiede il cluster. CloudWatch Il nome del gruppo di registro è
e il nome del flusso di log Fluent Bit è my-cluster
-fluent-bit-logsfluent-bit-
.podname
-pod-namespace
Nota
-
I registri dei processi vengono inviati solo quando il processo Fluent Bit viene avviato correttamente. Se si verifica un errore durante l'avvio di Fluent Bit, i registri di processo non vengono inviati. È possibile inviare i log dei processi solo a. CloudWatch
-
Per eseguire il debug dei registri del processo di invio sull'account, puoi applicare la
ConfigMap
precedente per ottenere i registri del processo. Il mancato avvio di Fluent Bit solitamente è dovuto al fatto che laConfigMap
non viene analizzata o accettata da Fluent Bit durante l'avvio.
Per interrompere i registri dei processi Fluent Bit
I registri Fluent Bit del processo di spedizione CloudWatch richiedono costi aggiuntivi di inserimento e archiviazione dei registri. 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 Fluent Bit processo del cluster Amazon EKS dopo aver abilitato la registrazione Fargate. Segue il formato
{cluster_name}-fluent-bit-logs
. -
Elimina i flussi di CloudWatch log esistenti creati per ogni log di Pod's processo nel gruppo di log. CloudWatch
-
Modifica la
ConfigMap
e impostaflb_log_cw: "false"
. -
Riavvia tutti i Pods esistenti nel cluster.
Applicazione di prova
-
Implementa un Pod di esempio.
-
Salva nel tuo computer i seguenti contenuti in un file denominato
.sample-app
.yamlapiVersion: apps/v1 kind: Deployment metadata: name: sample-app namespace:
same-namespace-as-your-fargate-profile
spec: 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 verificare se la caratteristica di registrazione è abilitata o disabilitata per qualche motivo, ad esempio per una ConfigMap
non valida, e perché questa non è valida, controlla gli eventi del Pod con
. L'output potrebbe includere eventi del Pod che chiariscono se la registrazione è abilitata o meno, ad esempio l'output di esempio seguente.kubectl describe pod
pod_name
[...]
Annotations: CapacityProvisioned: 0.25vCPU 0.5GB
Logging: LoggingDisabled: LOGGING_CONFIGMAP_NOT_FOUND
kubernetes.io/psp: eks.privileged
[...]
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 del Pod sono effimeri, con un periodo di tempo che dipende dalle impostazioni. È inoltre possibile visualizzare le annotazioni di un Pod's utilizzando
. Nell'annotazione del Pod, è possibile verificare se, e per quale motivo, la caratteristica di registrazione è abilitata o disabilitata.kubectl describe pod
pod-name