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à.
Invio di log ad Amazon CloudWatch
OTel Container Insights raccoglie e invia i log dei container ad Amazon CloudWatch Logs utilizzando la pipeline di log di OpenTelemetry Collector. Il componente aggiuntivo Amazon CloudWatch Observability EKS implementa un OpenTelemetry Collector as a DaemonSet che utilizza il ricevitore filelog per tracciare i file di log dei container, arricchirli con i metadati Kubernetes ed esportarli in Logs tramite l'esportatore Logs. CloudWatch CloudWatch
Non è richiesta alcuna configurazione aggiuntiva per la raccolta di log di base. La raccolta dei log è abilitata per impostazione predefinita quando si segue ilAvvio rapido: Otel Container Insights su Amazon EKS.
Prerequisiti
Prima di configurare la raccolta dei registri, verifica di soddisfare i seguenti requisiti.
-
OTel Container Insights è installato e il
amazon-cloudwatch-observabilitycomponente aggiuntivo è attivo sul cluster -
Autorizzazioni IAM:
logs:CreateLogGrouplogs:CreateLogStream,logs:PutLogEvents,logs:DescribeLogGroups, elogs:DescribeLogStreams(incluse nella policyCloudWatchAgentServerPolicygestita) -
Accesso al nodo: il raccoglitore richiede l'accesso a ogni
/var/log/podsnodo
Gruppi e fonti di log
La tabella seguente descrive il gruppo di log creato da OTel Container Insights e la fonte da cui raccoglie.
| Gruppo di log | Origine | Indice |
|---|---|---|
/aws/containerinsights/ |
/var/log/pods/**/*.log |
Tutti i log stdout e stderr dei container |
Nota
I log dell'host e del dataplane saranno disponibili in una versione futura.
Come funziona la pipeline di log di Otel
Il OpenTelemetry Collector del componente aggiuntivo esegue una pipeline di log con i seguenti componenti.
-
Ricevitori: il
filelogricevitore recupera i file di registro del contenitore da./var/log/pods/ -
Processori: il
k8sattributesprocessore arricchisce i log con metadati Kubernetes. Ilbatchprocessore raggruppa in batch i record di registro prima dell'esportazione. Ilresourceprocessore aggiunge gli attributi delle risorse. -
Esportatori: l'
awscloudwatchlogsesportatore invia i record di registro a Logs. CloudWatch
Arricchimento dei log
La pipeline arricchisce ogni record di registro con i seguenti attributi.
-
Attributi delle risorse Kubernetes:
k8s.pod.name,,, ek8s.namespace.namek8s.container.namek8s.node.namek8s.deployment.name -
Etichette dei pod: tutte le etichette dei pod come attributi
k8s.pod.label.* -
Attributi cloud:
cloud.regioncloud.account.id, ecloud.platform -
Attributi del cluster:
k8s.cluster.name
Personalizzazione della raccolta di registri
È possibile personalizzare la raccolta dei registri aggiornando i valori di configurazione del componente aggiuntivo. Le sezioni seguenti descrivono le opzioni di personalizzazione più comuni.
Disabilita la raccolta dei registri
Per disabilitare completamente la raccolta dei registri, aggiorna la configurazione del componente aggiuntivo con i registri dei contenitori disabilitati.
Per disabilitare la raccolta dei log
-
Eseguire il seguente comando seguente. Sostituisci
cluster-namecon il nome del tuo cluster Amazon EKS.aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{"containerLogs":{"enabled":false}}' \ --resolve-conflicts OVERWRITE
Escludi i namespace dalla raccolta di log
Per escludere namespace specifici dalla raccolta di log, utilizzate l'opzione di configurazione. excludeNamespaces
Per escludere i namespace dalla raccolta di log
-
Eseguire il seguente comando seguente. Sostituisci
cluster-namecon il nome del tuo cluster Amazon EKS. Sostituisci i valori dello spazio dei nomi con gli spazi dei nomi che desideri escludere.aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{"containerLogs":{"enabled":true,"excludeNamespaces":["kube-system","load-testing","monitoring"]}}' \ --resolve-conflicts OVERWRITE
Includi solo namespace specifici
Per raccogliere i log solo da namespace specifici, utilizzate l'opzione di configurazione. includeNamespaces
Per includere solo namespace specifici
-
Eseguire il seguente comando seguente. Sostituisci
cluster-namecon il nome del tuo cluster Amazon EKS. Sostituisci i valori dello spazio dei nomi con i namespace che desideri includere.aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{"containerLogs":{"enabled":true,"includeNamespaces":["production","staging"]}}' \ --resolve-conflicts OVERWRITE
Configura l'analisi dei log su più righe
Per combinare voci di registro su più righe (come stack trace) in un unico record di registro, configura l'analisi su più righe con uno schema di prima riga.
Per configurare l'analisi dei log su più righe
-
Eseguire il seguente comando seguente. Sostituisci
cluster-namecon il nome del tuo cluster Amazon EKS. Sostituisci ilfirstLinePatternvalore con uno schema regex che corrisponda alla prima riga di ogni voce di registro.aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{"containerLogs":{"enabled":true,"multilineConfig":{"firstLinePattern":"^\\d{4}-\\d{2}-\\d{2}|^\\[\\d{4}","parseFormat":"auto"}}}' \ --resolve-conflicts OVERWRITE
Imposta la conservazione dei log
Per impostazione predefinita, CloudWatch Logs conserva i dati di registro a tempo indeterminato. Per controllare i costi di archiviazione, è possibile impostare una politica di conservazione sul gruppo di log.
Per impostare la conservazione dei log
-
Eseguire il seguente comando seguente. Sostituisci
cluster-namecon il nome del tuo cluster Amazon EKS. Sostituisci30con il numero di giorni di conservazione dei log.aws logs put-retention-policy \ --log-group-name "/aws/containerinsights/cluster-name/application" \ --retention-in-days30
Verifica
Per verificare che la raccolta dei registri funzioni, verifica che i gruppi di log previsti esistano e contengano dati.
Per verificare la raccolta dei registri
-
Eseguire il seguente comando seguente. Sostituisci
cluster-namecon il nome del tuo cluster Amazon EKS.aws logs describe-log-groups \ --log-group-name-prefix "/aws/containerinsights/cluster-name" \ --query "logGroups[].{Name:logGroupName,StoredBytes:storedBytes}" \ --output tableL'output mostra i nomi dei gruppi di log e il numero di byte memorizzati. Un valore diverso da zero per
StoredBytesconferma che la pipeline sta consegnando i log.
Risoluzione dei problemi
Utilizza la seguente guida per risolvere i problemi più comuni di raccolta dei log.
I gruppi di log non vengono creati dopo 5 minuti
Sintomo: il gruppo di /aws/containerinsights/ log non viene visualizzato nei CloudWatch registri dopo 5 minuti.cluster-name/application
Causa: il raccoglitore non dispone delle autorizzazioni IAM necessarie per creare gruppi di log e flussi di log.
Soluzione: verifica che al ruolo IAM associato al raccoglitore sia associata la policy gestitaCloudWatchAgentServerPolicy. Questa politica include le logs:CreateLogStream autorizzazioni logs:CreateLogGroup e.
Il gruppo di log dell'applicazione esiste ma è vuoto
Sintomo: il gruppo di log dell'applicazione esiste in CloudWatch Logs, ma non contiene flussi di log o eventi di log.
Causa: questo problema si verifica quando i contenitori non scrivono su stdout o stderr o il ricevitore filelog non può accedere al nodo. /var/log/pods/
Soluzione: completare i seguenti passaggi per risolvere il problema.
-
Verifica che i contenitori dell'applicazione scrivano i log su stdout o stderr.
-
Verifica che il collector DaemonSet pod abbia un supporto per il volume.
/var/log/podskubectl get daemonset -n amazon-cloudwatch -o yaml | grep -A 5 "var/log/pods" -
Controlla i log del raccoglitore per eventuali errori di accesso ai file.
kubectl logs -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent --tail=50 | grep -i "error\|permission"
Costi elevati di log CloudWatch
Sintomo: CloudWatch i costi di inserimento o archiviazione dei log sono superiori al previsto.
Causa: High-volume i namespace (come i test di carico o i namespace di monitoraggio) generano grandi volumi di log.
Soluzione: completare i seguenti passaggi per ridurre i costi.
-
Escludi gli spazi dei nomi ad alto volume dalla raccolta di log. Per istruzioni, consulta Escludi i namespace dalla raccolta di log.
-
Imposta una politica di conservazione sul gruppo di log per eliminare automaticamente i log più vecchi. Per istruzioni, consulta Imposta la conservazione dei log.