Visualizar logs de instâncias do Amazon EC2 no ambiente do Elastic Beanstalk - AWS Elastic Beanstalk

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Visualizar logs de instâncias do Amazon EC2 no ambiente do Elastic Beanstalk

Este tópico explica os tipos de logs de instância fornecidos peloo Elastic Beanstalk. Também fornece instruções detalhadas para recuperá-los e gerenciá-los.

As instâncias do Amazon EC2 no ambiente do Elastic Beanstalk geram logs que podem ser visualizados para solucionar problemas com sua aplicação ou arquivos de configuração. Os logs criados pelo servidor Web, pelo servidor de aplicações, pelos scripts da plataforma do Elastic Beanstalk e pelo AWS CloudFormation são armazenados localmente em instâncias individuais. Você pode recuperá-los facilmente usando o console de gerenciamento do ambiente ou a CLI do EB. Também é possível configurar seu ambiente para fazer streaming de logs para o Amazon CloudWatch Logs em tempo real.

Logs finais são as últimas 100 linhas dos arquivos de log usados com mais frequência, ou seja, logs operacionais do Elastic Beanstalk e logs do servidor Web ou do servidor de aplicações. Quando logs finais são solicitados no console de gerenciamento do ambiente ou com eb logs, uma instância no ambiente concatena as entradas de log mais recentes em um único arquivo de texto e o carrega no Amazon S3.

Logs em pacote são logs completos para uma maior variedade de arquivos de log, incluindo logs do yum e do cron e vários logs do AWS CloudFormation. Quando logs em pacote são solicitados, uma instância no ambiente empacota todos os arquivos de log em um arquivo ZIP e o carrega no Amazon S3.

nota

As plataformas do Elastic Beanstalk Windows Server não são compatíveis com logs em pacote.

Para fazer upload de logs alternados para o Amazon S3, as instâncias no ambiente precisam ter um perfil da instância com permissão para gravar no bucket do Amazon S3 do Elastic Beanstalk. Essas permissões são incluídas no perfil de instância padrão cuja criação o Elastic Beanstalk solicita ao iniciar um ambiente no console do Elastic Beanstalk pela primeira vez.

Como recuperar logs de instâncias
  1. Abra o console do Elastic Beanstalk e, na lista Regions (Regiões), selecione a sua Região da AWS.

  2. No painel de navegação, selecione Ambientes e selecione o nome do ambiente na lista.

    nota

    Se você tiver muitos ambientes, use a barra de pesquisa para filtrar a lista de ambientes.

  3. No painel de navegação, selecione Logs.

  4. Escolha Request Logs (Logs de solicitação) e escolha o tipo de logs a serem recuperados. Para obter logs finais, escolha Últimas 100 linhas. Para obter logs em pacote, selecione Logs completos.

  5. Quando o Elastic Beanstalk terminar de recuperar seus logs, escolha Download.

O Elastic Beanstalk armazena logs finais e em pacote em um bucket do Amazon S3 e gera um URL pré-assinado do Amazon S3 que pode ser usado para acessar os logs. O Elastic Beanstalk exclui os arquivos do Amazon S3 após 15 minutos.

Atenção

Qualquer pessoa que tenha o URL do Amazon S3 pré-assinado poderá acessar os arquivos antes que eles sejam excluídos. Disponibilize o URL somente para partes confiáveis.

nota

Sua política de usuário deve ter a permissão s3:DeleteObject. O Elastic Beanstalk usa suas permissões de usuário para excluir os logs do Amazon S3.

Para mantê-los, configure o ambiente para publicá-los no Amazon S3 automaticamente depois que forem alternados. Para habilitar a alternância de logs para o Amazon S3, siga o procedimento em Configurar visualização de logs de instância. As instâncias em seu ambiente tentarão fazer upload dos logs que foram girados uma vez por hora.

Se o aplicativo gera logs em um local que não faz parte da configuração padrão da plataforma do ambiente, você pode estender a configuração padrão usando arquivos de configuração (.ebextensions). É possível adicionar arquivos de log de seu aplicativo aos logs finais, aos logs em pacote e à rotação de logs.

Para streaming de logs em tempo real e armazenamento no longo prazo, configure o ambiente para fazer streaming de logs para o Amazon CloudWatch Logs.

Local de log em instâncias do Amazon EC2

Os logs são armazenados em locais padrão nas instâncias do Amazon EC2 no ambiente. O Elastic Beanstalk gera os logs a seguir.

Amazon Linux 2

  • /var/log/eb-engine.log

Amazon Linux AMI (AL1)

nota

Em 18 de julho de 2022, o Elastic Beanstalk definiu o status de todas as ramificações de plataforma baseadas no Amazon Linux AMI (AL1) como descontinuadas. Para obter mais informações sobre como migrar para uma ramificação da plataforma Amazon Linux 2023 atual e totalmente compatível, consulte Migrar a aplicação Linux do Elastic Beanstalk para o Amazon Linux 2023 ou 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

Esses logs contêm mensagens sobre atividades de implantação, incluindo mensagens relacionadas a arquivos de configuração (.ebextensions).

Cada aplicativo e servidor web armazena logs em uma pasta própria:

  • Apache: /var/log/httpd/

  • IIS: C:\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/

Local de log no Amazon S3

Ao solicitar logs finais ou em pacote de seu ambiente, ou quando as instâncias fazem upload de logs alternados, eles são armazenados em seu bucket do Elastic Bucket no Amazon S3. O Elastic Beanstalk cria um bucket denominado elasticbeanstalk-region-account-id para cada região da AWS em que ambientes são criados. Dentro desse bucket, os logs são armazenados no caminho resources/environments/logs/logtype/environment-id/instance-id.

Por exemplo, os logs da instância i-0a1fd158, no ambiente do Elastic Beanstalke-mpcwnwheky na região da AWSus-west-2 na conta 123456789012 são armazenados nos seguintes locais:

  • Logs finais:

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

  • Logs em pacote:

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

  • Logs alternados:

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

nota

Você pode localizar o ID do ambiente no console de gerenciamento do ambiente.

O Elastic Beanstalk exclui os logs finais e em pacote do Amazon S3 automaticamente 15 minutos após eles serem criados. Os logs alternados são mantidos até você excluí-los ou movê-los para o S3 Glacier.

Configurações de rotação de log no Linux

Em plataformas Linux, o Elastic Beanstalk usa logrotate para alternar logs periodicamente. Se configurado, depois que um log é alternado localmente, a tarefa de alternância de logs o seleciona e faz upload dele no Amazon S3. Por padrão, os logs que são alternados localmente não são exibidos em logs finais ou em pacote.

É possível encontrar arquivos de configuração do Elastic Beanstalk para logrotate em /etc/logrotate.elasticbeanstalk.hourly/. Essas configurações de rotação são específicas da plataforma e podem mudar em futuras versões dela. Para obter mais informações sobre as definições disponíveis e configurações de exemplo, execute man logrotate.

Os arquivos de configuração são chamado de trabalhos cron em /etc/cron.hourly/. Para obter mais informações sobre cron, execute man cron.

Extensão da configuração padrão da tarefa de log

O Elastic Beanstalk usa arquivos em subpastas de /opt/elasticbeanstalk/tasks (Linux) ou C:\Program Files\Amazon\ElasticBeanstalk\config (Windows Server) na instância do Amazon EC2 para configurar tarefas para logs finais, logs em pacote e alternância de logs.

No Amazon Linux:

  • Logs finais:

    /opt/elasticbeanstalk/tasks/taillogs.d/

  • Logs em pacote:

    /opt/elasticbeanstalk/tasks/bundlelogs.d/

  • Logs alternados:

    /opt/elasticbeanstalk/tasks/publishlogs.d/

No Windows Server:

  • Logs finais:

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

  • Logs alternados:

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

Por exemplo, o arquivo eb-activity.conf no Linux adiciona dois arquivos de log à tarefa de logs finais.

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

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

Você pode usar arquivos de configuração do ambiente (.ebextensions) para adicionar seus próprios arquivos .conf a essas pastas. Um arquivo .conf lista os arquivos de log específicos para a aplicação, que o Elastic Beanstalk adiciona às tarefas de arquivo de log.

Use a seção files para adicionar os arquivos de configuração às tarefas que você deseja modificar. Por exemplo, o texto de configuração a seguir adiciona um arquivo de configuração de log a cada instância em seu ambiente: Este arquivo de configuração de log, cloud-init.conf, adiciona /var/log/cloud-init.log a logs finais.

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

Adicione esse texto a um arquivo com a extensão de nome de arquivo .config em seu pacote de origem em uma pasta chamada .ebextensions.

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

Em plataformas Linux, você também pode usar caracteres curinga em configurações de tarefas de log. Este arquivo de configuração adiciona todos os arquivos com a extensão de nome de arquivo .log da pasta log na raiz do aplicativo aos logs em pacote.

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

As configurações de tarefas de log não oferecem suporte a caracteres curinga em plataformas Windows.

nota

Para ajudar a se familiarizar com os procedimentos de personalização de log, é possível implantar uma aplicação de exemplo usando a CLI do EB. Para isso, a CLI do EB cria um diretório de aplicação local que contém um subdiretório .ebextentions com uma configuração de exemplo. Também é possível usar os arquivos de log da aplicação de exemplo para explorar o recurso de recuperação de log descrito neste tópico. Para obter mais informações sobre como criar uma aplicação de exemplo com a CLI do EB, consulte as Noções básicas da CLI do EB.

Para obter mais informações sobre o uso de arquivos de configuração, consulte Personalização avançada de ambiente com arquivos de configuração (.ebextensions).

Assim como é possível estender logs finais e logs de pacote, você pode estender a rotação de log usando um arquivo de configuração. Sempre que o Elastic Beanstalk alterna seus próprios logs e os envia para o Amazon S3, ele também alterna e faz upload de seus logs adicionais. A extensão de rotação de log se comporta de forma diferente dependendo da plataforma do sistema operacional. As seções a seguir descrevem os dois casos.

Extensão de rotação de log no Linux

Conforme explicado em Configurações de rotação de log no Linux, o Elastic Beanstalk usa logrotate para alternar logs em plataformas Linux. Quando você configura os arquivos de log do seu aplicativo para a rotação de log, o aplicativo não precisa criar cópias de arquivos de log. O Elastic Beanstalk configura logrotate para criar uma cópia dos arquivos de log da aplicação para cada alternância. Portanto, o aplicativo deve manter os arquivos de log desbloqueados quando não estiver gravando nesses arquivos.

Extensão da rotação de log no Windows Server

No Windows Server, quando você configura os arquivos de log do seu aplicativo para a rotação de log, o aplicativo deve girar os arquivos de log periodicamente. O Elastic Beanstalk procura arquivos com nomes iniciados pelo padrão que você configurou e seleciona-os para fazer upload para o Amazon S3. Além disso, pontos no nome de arquivo são ignorados e o Elastic Beanstalk considera o nome até o ponto como a base do nome do arquivo de log.

O Elastic Beanstalk faz upload de todas as versões de um arquivo de log base, exceto da mais recente, porque considera essa a versão do arquivo de log da aplicação ativa, que pode ser bloqueada. O aplicativo pode, portanto, manter o arquivo de log ativo bloqueado entre alternâncias.

Por exemplo: o aplicativo grava em um arquivo de log chamado my_log.log e você especifica esse nome no arquivo .conf. O aplicativo periodicamente gira o arquivo. Durante o ciclo de alternância do Elastic Beanstalk, ele localiza os seguintes arquivos na pasta do arquivo de log: my_log.log, my_log.0800.log, my_log.0830.log. O Elastic Beanstalk considera todos eles como versões do nome base my_log. O arquivo my_log.log tem a hora de modificação mais recente, então o Elastic Beanstalk faz upload apenas dos outros dois arquivos, my_log.0800.log e my_log.0830.log.

Fazer streaming de arquivos de log para o Amazon CloudWatch Logs

É possível configurar seu ambiente para fazer streaming de logs para o Amazon CloudWatch Logs no console do Elastic Beanstalk ou usando opções de configuração. Com o CloudWatch Logs, cada instância no ambiente faz o streaming de logs para grupos de logs que você pode configurar para serem retidos por semanas ou anos, mesmo depois que seu ambiente for encerrado.

O conjunto de logs transmitido varia por ambiente, mas sempre inclui o eb-engine.log e os logs de acesso do servidor de proxy nginx ou Apache executado à frente do aplicativo.

É possível configurar o streaming de logs no console do Elastic Beanstalk durante a criação do ambiente ou em um ambiente existente. É possível definir as seguintes opções no console: habilitar/desabilitar a transmissão de logs ao CloudWatch Logs, definir o número de dias de retenção e selecionar entre opções de ciclo de vida. No exemplo a seguir, os logs são salvos por até sete dias, mesmo quando o ambiente é encerrado.

Imagem de tela das configurações do CloudWatch Logs no console do Elastic Beanstalk.

O arquivo de configuração a seguir permite o streaming de logs com retenção de 180 dias, mesmo se o ambiente estiver encerrado.

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