Visualizzazione dei log delle EC2 istanze Amazon nel tuo ambiente Elastic Beanstalk - AWS Elastic Beanstalk

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à.

Visualizzazione dei log delle EC2 istanze Amazon nel tuo ambiente Elastic Beanstalk

Questo argomento spiega i tipi di log delle istanze forniti da Elastic Beanstalk. Fornisce inoltre istruzioni dettagliate per recuperarli e gestirli.

Le EC2 istanze Amazon nel tuo ambiente Elastic Beanstalk generano log che puoi visualizzare per risolvere problemi relativi all'applicazione o ai file di configurazione. I log creati dal server Web, dal server delle applicazioni, dagli script AWS CloudFormation della piattaforma Elastic Beanstalk e vengono archiviati localmente su singole istanze. Puoi recuperarle con facilità utilizzando la console di gestione dell'ambiente o EB CLI. Puoi anche configurare il tuo ambiente per lo streaming dei log su Amazon CloudWatch Logs in tempo reale.

I log di coda includono le ultime 100 righe dei file di log più utilizzati, ovvero log operativi di Elastic Beanstalk e log generati dal server Web o dal server di applicazioni. Quando richiedi i log di coda nella console di gestione dell'ambiente o con eb logs, un'istanza nel tuo ambiente concatena le voci di log più recenti in unico file di testo e carica il file in Amazon S3.

I registri di bundle sono registri completi per un'ampia gamma di file di log, inclusi i log di yum e cron e vari log di AWS CloudFormation. Quando richiedi i log di bundle, un'istanza nel tuo ambiente comprime i file di log completi in un archivio ZIP e carica il file in Amazon S3.

Per caricare i log ruotati in Amazon S3, le istanze nell'ambiente devono disporre di un profilo di istanza con l'autorizzazione di scrittura sul bucket Elastic Beanstalk in Amazon S3. Queste autorizzazioni sono incluse nel profilo dell'istanza predefinito che Elastic Beanstalk chiede di creare quando un ambiente viene avviato nella console Elastic Beanstalk per la prima volta.

Per recuperare i log delle istanze
  1. Apri la console Elastic Beanstalk e, nell'elenco Regioni, seleziona la tua. Regione AWS

  2. Nel pannello di navigazione selezionare Environments (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

    Nota

    Se si dispone di molti ambienti, utilizzare la barra di ricerca per filtrare l'elenco degli ambienti.

  3. Nel riquadro di navigazione scegli Logs (Log).

  4. Scegliere Request Logs (Registri richieste), quindi scegliere il tipo di registri da recuperare. Per ottenere i log di coda, scegli Last 100 Lines (Ultime 100 righe). Per ottenere i log di bundle, scegli Full Logs (Log completi).

  5. Quando Elastic Beanstalk termina di recuperare i log, scegli Download (Scarica).

Elastic Beanstalk archivia i log di coda e bundle in un bucket Amazon S3 e genera un URL Amazon S3 prefirmato che puoi utilizzare per accedere ai tuoi log. Elastic Beanstalk elimina i file da Amazon S3 dopo 15 minuti.

avvertimento

Chiunque sia in possesso dell'URL Amazon S3 prefirmato può accedere ai file prima che siano eliminati. Assicurati di rendere l'URL disponibile solo a persone affidabili.

Nota

La policy dell'utente deve disporre dell'autorizzazione s3:DeleteObject. Elastic Beanstalk utilizza le autorizzazioni utente per eliminare i log da Amazon S3.

Per conservare i log, puoi configurare l'ambiente in modo da pubblicare automaticamente i log in Amazon S3 dopo la rotazione. Per abilitare la rotazione dei log in Amazon S3, segui la procedura descritta in Configurazione della visualizzazione dei log delle istanze. Le istanze nell'ambiente tenteranno di caricare i log che sono stati ruotati una volta ogni ora.

Se l'applicazione genera log in una posizione che non è inclusa nella configurazione di default per la piattaforma dell'ambiente, puoi estendere tale configurazione utilizzando i file di configurazione (.ebextensions). Puoi aggiungere i file di log dell'applicazione ai log di coda, ai log di bundle o alla rotazione dei log.

Per lo streaming dei log in tempo reale e lo storage a lungo termine, configura il tuo ambiente per lo streaming dei log su Amazon CloudWatch Logs.

Posizione del registro sulle EC2 istanze Amazon

I log vengono archiviati in posizioni standard sulle EC2 istanze Amazon del tuo ambiente. Elastic Beanstalk genera i seguenti log.

Amazon Linux 2

  • /var/log/eb-engine.log

AMI Amazon Linux (AL1)

Nota

Il 18 luglio 2022, Elastic Beanstalk ha impostato lo stato di tutte le filiali della piattaforma basate su Amazon Linux AMI () come ritirato. AL1 Per ulteriori informazioni sulla migrazione a una ramificazione della piattaforma Amazon Linux 2023 attuale e completamente supportata, consulta Migrazione dell'applicazione Elastic Beanstalk Linux ad Amazon Linux 2023 o Amazon Linux 2.

  • /var/log/eb-activity.log

  • /var/log/eb-commandprocessor.log

Windows Server

  • C:\Program Files\Amazon\ElasticBeanstalk\logs\

  • C:\cfn\log\cfn-init.log

Questi log contengono messaggi sulle attività di distribuzione, inclusi i messaggi relativi ai file di configurazione (.ebextensions).

Ogni server Web e di applicazione archivia i log nella relativa cartella:

  • Apache/var/log/httpd/

  • IISC:\inetpub\wwwroot\

  • Node.js/var/log/nodejs/

  • nginx/var/log/nginx/

  • Passenger/var/app/support/logs/

  • Puma/var/log/puma/

  • Python/opt/python/log/

  • Tomcat/var/log/tomcat/

Posizione dei log in Amazon S3

Quando richiedi i log di coda o i log di bundle dal tuo ambiente o se le istanze caricano log ruotati, i log sono archiviati nel tuo bucket Elastic Beanstalk in Amazon S3. Elastic Beanstalk crea un elasticbeanstalk-region-account-id bucket denominato AWS per ogni regione in cui vengono creati gli ambienti. In questo bucket, i log sono archiviati in resources/environments/logs/logtype/environment-id/instance-id.

Ad esempio, i log dell'istanzai-0a1fd158, nell' AWS ambiente Elastic e-mpcwnwheky Beanstalk us-west-2 nella regione dell'account, vengono archiviati 123456789012 nelle seguenti posizioni:

  • Log di coda:

    s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/tail/e-mpcwnwheky/i-0a1fd158

  • Log di bundle:

    s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/bundle/e-mpcwnwheky/i-0a1fd158

  • Log ruotati:

    s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/publish/e-mpcwnwheky/i-0a1fd158

Nota

Puoi trovare il tuo ID ambiente nella console di gestione dell'ambiente.

Elastic Beanstalk elimina automaticamente i log di coda e bundle da Amazon S3 15 minuti dopo la loro creazione. I log ruotati vengono conservati fino a che non li elimini o li sposti in S3 Glacier.

Impostazioni della rotazione dei log in Linux

Sulle piattaforme Linux, Elastic Beanstalk usa logrotate per ruotare periodicamente i log. Dopo la rotazione in locale di un log, l'attività di rotazione lo seleziona e lo carica in Amazon S3, se previsto dalla configurazione. Per impostazione predefinita, i log ruotati in locale non sono visualizzati nei log di coda o di bundle.

I file di configurazione Elastic Beanstalk per logrotate sono disponibili in /etc/logrotate.elasticbeanstalk.hourly/. Queste impostazioni di rotazione sono specifiche per la piattaforma e potrebbero cambiare nelle versioni future della piattaforma. Per ulteriori informazioni sulle impostazioni e sugli esempi di configurazione disponibili, esegui man logrotate.

I file di configurazione sono richiamati da processi cron in /etc/cron.hourly/. Per ulteriori informazioni su cron, utilizza man cron.

Estensione della configurazione predefinita per i task dei log

Elastic Beanstalk utilizza i file nelle /opt/elasticbeanstalk/tasks sottocartelle di (LinuxC:\Program Files\Amazon\ElasticBeanstalk\config) o (Windows Server) sull'istanza EC2 Amazon per configurare le attività per i tail log, i bundle log e la rotazione dei log.

Su Amazon Linux:

  • Log di coda:

    /opt/elasticbeanstalk/tasks/taillogs.d/

  • Log di bundle:

    /opt/elasticbeanstalk/tasks/bundlelogs.d/

  • Log ruotati:

    /opt/elasticbeanstalk/tasks/publishlogs.d/

Su Windows Server:

  • Log di coda:

    c:\Program Files\Amazon\ElasticBeanstalk\config\taillogs.d\

  • Log di bundle:

    c:\Program Files\Amazon\ElasticBeanstalk\config\bundlelogs.d\

  • Log ruotati:

    c:\Program Files\Amazon\ElasticBeanstalk\config\publogs.d\

Ad esempio, il file eb-activity.conf in Linux aggiunge due file di log all'attività per i log di coda.

/opt/elasticbeanstalk/tasks/taillogs.d/eb-activity.conf

/var/log/eb-commandprocessor.log /var/log/eb-activity.log

Puoi utilizzare i file di configurazione dell'ambiente (.ebextensions) per aggiungere i tuoi file .conf a queste cartelle. Un file .conf elenca i file di log specifici della tua applicazione aggiunti da Elastic Beanstalk alle attività per i file di log.

Utilizza la sezione files per aggiungere file di configurazione ai task che desideri modificare. Ad esempio, il testo della configurazione seguente aggiunge un file di configurazione del log a ogni istanza nel tuo ambiente. Questo file di configurazione del log, cloud-init.conf, aggiunge /var/log/cloud-init.log ai log di coda.

files: "/opt/elasticbeanstalk/tasks/taillogs.d/cloud-init.conf" : mode: "000755" owner: root group: root content: | /var/log/cloud-init.log

Aggiungi questo testo a un file con estensione .config nel bundle di origine in una cartella denominata .ebextensions.

~/workspace/my-app |-- .ebextensions | `-- tail-logs.config |-- index.php `-- styles.css

Sulle piattaforme Linux, puoi anche utilizzare caratteri jolly nelle configurazioni per i task dei log. Questo file di configurazione aggiunge tutti i file con l'estensione .log dalla cartella log nella directory principale dell'applicazione ai log di bundle.

files: "/opt/elasticbeanstalk/tasks/bundlelogs.d/applogs.conf" : mode: "000755" owner: root group: root content: | /var/app/current/log/*.log

Le configurazioni per i task dei log non supportano i caratteri jolly sulle piattaforme Windows.

Nota

Per acquisire familiarità con le procedure di personalizzazione dei log, è possibile distribuire un'applicazione di esempio utilizzando l'interfaccia della riga di comando EB. A tale scopo, la CLI EB crea una directory dell'applicazione locale che contiene una sottodirectory .ebextentions con una configurazione di esempio. È inoltre possibile utilizzare i file di registro dell'applicazione di esempio per esplorare la funzionalità di recupero dei log descritta in questo argomento. Per ulteriori informazioni su come creare un'applicazione di esempio con l'interfaccia della riga di comando EB, vedere Nozioni di base della CLI EB.

Per ulteriori informazioni sull'utilizzo dei file di configurazione, consulta Personalizzazione avanzata dell'ambiente con i file di configurazione (.ebextensions).

Come per i log di coda e i log di bundle, puoi estendere la rotazione dei log utilizzando un file di configurazione. Ogni volta che Elastic Beanstalk ruota i propri log e li carica su Amazon S3, ruota e carica anche i tuoi log aggiuntivi. Il comportamento dell'estensione della rotazione dei log varia a seconda del sistema operativo della piattaforma. Le sezioni seguenti descrivono i due casi.

Estensione della rotazione dei log in Linux

Come spiegato in Impostazioni della rotazione dei log in Linux, Elastic Beanstalk utilizza logrotate per ruotare i log sulle piattaforme Linux. Quando configuri i file di log della tua applicazione per la rotazione, l'applicazione non deve creare copie dei file di log. Elastic Beanstalk configura logrotate per creare una copia dei file di log dell'applicazione per ogni rotazione. Pertanto, l'applicazione deve mantenere i file di log sbloccati quando non scrive attivamente su tali log.

Estensione della rotazione dei log in Windows Server

In Windows Server, quando configuri i file di log della tua applicazione per la rotazione dei log, l'applicazione deve ruotare i file di log periodicamente. Elastic Beanstalk cerca file con nomi che iniziano con il modello configurato e li seleziona per caricarli in Amazon S3. Inoltre, i punti nei nomi di file vengono ignorati e Elastic Beanstalk considera che il nome fino al punto è il nome di file di log di base.

Elastic Beanstalk carica tutte le versioni di un file di log di base eccetto quella più recente, in quanto la considera come il file di log attivo dell'applicazione, che può eventualmente essere bloccato. L'applicazione può quindi mantenere il file di log attivo bloccato tra le rotazioni.

Ad esempio, l'applicazione scrive su un file di log denominato my_log.log e tu indichi questo nome nel file .conf. L'applicazione ruota periodicamente il file. Durante il ciclo di rotazione di Elastic Beanstalk, trova i seguenti file nella cartella del file di log: my_log.log, my_log.0800.log, my_log.0830.log. Elastic Beanstalk considera tutti questi file come versioni del nome di base my_log. Il file my_log.log presenta l'ora di modifica più recente, quindi Elastic Beanstalk carica solo gli altri due file, ovvero my_log.0800.log e my_log.0830.log.

Streaming di file di registro su Amazon CloudWatch Logs

Puoi configurare il tuo ambiente per lo streaming dei log su Amazon CloudWatch Logs nella console Elastic Beanstalk o utilizzando le opzioni di configurazione. Con CloudWatch Logs, ogni istanza del tuo ambiente trasmette i log a gruppi di log che puoi configurare per essere conservati per settimane o anni, anche dopo la chiusura dell'ambiente.

Il set di log trasmessi in streaming varia a seconda dell'ambiente, ma include sempre eb-engine.log e i log di accesso del server proxy nginx o Apache che viene eseguito prima dell'applicazione.

Puoi configurare lo streaming dei log nella console Elastic Beanstalk durante la creazione dell'ambiente o per un ambiente esistente. È possibile impostare le seguenti opzioni dalla console: abilitare /disabilitare lo streaming dei log su CloudWatch Logs, impostare il numero di giorni di conservazione e selezionare tra le opzioni Lifecyle. In questo esempio, i log vengono salvati per un massimo di sette giorni, anche quando l'ambiente viene terminato.

Immagine della schermata delle impostazioni di CloudWatch Logs nella console Elastic Beanstalk.

Il seguente file di configurazione attiva lo streaming dei log con una conservazione di 180 giorni, anche se l'ambiente viene terminato.

Esempio .ebextensions/log-streaming.config
option_settings: aws:elasticbeanstalk:cloudwatch:logs: StreamLogs: true DeleteOnTerminate: false RetentionInDays: 180