Salta al contenuto

Come posso risolvere i problemi relativi ai log del container mancanti per Amazon ECS o Amazon EKS?

4 minuti di lettura
0

Non riesco a trovare i log del container per la mia attività Amazon Elastic Container Service (Amazon ECS) o per il mio pod Amazon Elastic Kubernetes Service (Amazon EKS).

Breve descrizione

Se mancano i log del container per Amazon ECS o Amazon EKS, potrebbero esserci problemi con l'istanza host. Oppure, se l'applicazione containerizzata non scrive nella posizione corretta, i log potrebbero non essere visibili al daemon Docker.

Di seguito sono riportate le situazioni comuni in cui l'applicazione containerizzata non scrive alcuni o tutti i log:

  • Per un'istanza di container in Amazon ECS esegui il comando docker logs yourContainerName.
  • Per un'attività in Amazon ECS utilizza il driver di log awslogs.
  • Per un cluster Amazon EKS esegui il comando kubectl logs yourPodName.

Risoluzione

Risolvi i problemi relativi ai log delle attività Amazon ECS

Verifica che l'attività sia configurata correttamente

  • Rivedi la configurazione dei log per il container con i log. Il driver di log è impostato dal parametro logConfiguration nella sezione definizione del container della definizione dell'attività ECS. I driver di log sono impostati per ogni container. Se l'attività ECS ha più definizioni del container, verifica che la configurazione dei log sia corretta per i container con i log.
  • Rivedi la configurazione della pulizia delle attività per l'istanza di container. L'agente del container di Amazon ECS rimuove automaticamente i file di log per recuperare spazio libero. Per conservare i file di log più a lungo nell'istanza di container, riduci la frequenza della pulizia delle attività.

Controlla i log di CloudWatch

Se le attività utilizzano il driver di log awslogs, i log vengono trasmessi ad Amazon CloudWatch Logs. Questi log non vengono mai scritti nell'istanza di container. Il comando docker logs yourContainerName restituisce il seguente messaggio di errore: "Error response from daemon: configured logging driver does not support reading."

Concedi le autorizzazioni corrette

Per consentire lo streaming dei tipi di avvio di Amazon Elastic Compute Cloud (Amazon EC2) su CloudWatch Logs, concedi le autorizzazioni al ruolo IAM dell'istanza di container.

Per consentire lo streaming dei tipi di avvio di AWS Fargate su CloudWatch Logs, concedi le autorizzazioni al ruolo IAM dell'attività utilizzato dall'attività.

Se i log sono ancora mancanti, completa i passaggi nella sezione Risolvi i problemi relativi al container dell'applicazione.

Risolvi i problemi relativi ai log dei pod Kubernetes in Amazon EKS

Per restituire i file di log generati dal container di un pod, esegui questo comando kubectl:

kubectl logs yourPodName

Nota: il kubelet rimuove automaticamente i file di log dopo l'uscita da un pod. Per ulteriori informazioni, consulta Garbage collection of unused containers and images (Rimozione di container e immagini inutilizzati (garbage collection)) sul sito web Kubernetes. Per conservare questi file di log più a lungo su un nodo worker, configura il kubelet in modo che esegua la rimozione di oggetti inutili (garbage collection) meno frequentemente.

Se i log sono ancora mancanti, completa i passaggi nella sezione Risolvi i problemi relativi al container dell'applicazione.

Risolvi i problemi relativi al container dell'applicazione

Per risolvere i problemi relativi al container dell'applicazione, completa le seguenti attività:

  • Imposta l'applicazione sul livello di log corretto durante la creazione del container.
    Nota: l'applicazione potrebbe richiedere l'impostazione della registrazione tramite una variabile di ambiente o in un file di configurazione.
  • Fai in modo che l'applicazione sia l'ENTRYPOINT del container. Per ulteriori informazioni, consulta ENTRYPOINT sul sito web Docker Docs.
    Nota: l'ENTRYPOINT nel dockerfile è il processo in cui vengono registrati i flussi STDOUT e STDERR I/O. Per ulteriori informazioni, consulta View container logs (Visualizzazione dei log del container) sul sito web Docker Docs.
  • Crea il container con i file di log dell'applicazione collegati a STDOUT e STDERR. Oppure configura l'applicazione per accedere direttamente a /proc/1/fd/1 (stdout) e /proc/1/fd/2 (stderr). Per esempi, consulta le immagini ufficiali del container nginx e httpd sul sito web Docker Hub.
    Nota: se il caso d'uso lo consente, fai in modo che il processo dell'applicazione sia il processo principale del container. Se il container utilizza uno script di shell come ENTRYPOINT, configura lo script per inizializzare i dati del container al runtime.
AWS UFFICIALEAggiornata 2 anni fa