Usar o Elastic Beanstalk com o Amazon CloudWatch Logs - 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á.

Usar o Elastic Beanstalk com o Amazon CloudWatch Logs

Este tópico explica os recursos de monitoramento que o serviço Amazon CloudWatch Logs pode fornecer ao Elastic Beanstalk. Ele também orienta na configuração e lista os locais dos logs de cada plataforma do Elastic Beanstalk.

A implementação do CloudWatch Logs pode permitir que as seguintes atividades de monitoramento sejam realizadas:

  • Monitorar e arquivar a aplicação Elastic Beanstalk, sistema e arquivos de log personalizados das instâncias do Amazon EC2 dos ambientes.

  • Configurar alarmes que facilitam a reação a eventos específicos de fluxo de log que seus filtros de métricas extraem.

O agente do CloudWatch Logs instalado em cada instância do Amazon EC2 no ambiente publica pontos de dados de métrica para o serviço CloudWatch para cada grupo de logs configurado. Cada grupo de logs aplica seus próprios padrões de filtro para determinar quais eventos de stream de log serão enviados ao CloudWatch como pontos de dados. Os streams de log que pertencem ao mesmo grupo de log compartilham as mesmas configurações de retenção, monitoramento e controle de acesso. É possível configurar o Elastic Beanstalk para fazer streaming automaticamente de logs para o serviço CloudWatch, conforme descrito em Fazer streaming de logs de instâncias para o CloudWatch Logs. Para obter mais informações sobre o CloudWatch Logs, incluindo terminologia e conceitos, consulte o Guia do usuário do Amazon CloudWatch Logs.

Além de logs da instância, se você habilitar a integridade avançada para seu ambiente, poderá configurar o ambiente para fazer streaming de informações de integridade para o CloudWatch Logs. Consulte Fazer streaming de informações de integridade do ambiente do Elastic Beanstalk para o Amazon CloudWatch Logs.

Pré-requisitos para streaming de logs de instância para o CloudWatch Logs

Para habilitar o streaming de logs de instâncias do Amazon EC2 do ambiente para o CloudWatch Logs, é necessário atender às condições a seguir.

  • Plataforma: esse recurso só está disponível em versões de plataforma lançadas a partir desta versão, portanto, se você estiver usando uma versão de plataforma anterior, atualize o ambiente para um atual.

  • Caso não tenha a política gerenciada AWSElasticBeanstalkWebTier ou AWSElasticBeanstalkWorkerTier do Elastic Beanstalk em seu perfil de instância do Elastic Beanstalk, adicione o seguinte ao seu perfil para habilitar esse recurso.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": [ "*" ] } ] }

Como o Elastic Beanstalk configura o CloudWatch Logs

O Elastic Beanstalk instala um agente de log do CloudWatch com as configurações padrão em cada instância criada. Saiba mais na Referência do agente do CloudWatch Logs.

Quando o streaming de log de instâncias é habilitado para o CloudWatch Logs, o Elastic Beanstalk envia arquivos de log das instâncias do seu ambiente para o CloudWatch Logs. Plataformas diferentes transmitem logs diferentes. A tabela a seguir lista os logs por plataforma.

Plataforma/ramificação da plataforma

Logs

Docker/

ramificação da plataforma: Docker em execução no Amazon Linux 2 de 64 bits

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/docker

  • /var/log/docker-events.log

  • /var/log/eb-docker/containers/eb-current-app/stdouterr.log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

Docker/

ramificação da plataforma: ECS em execução no Amazon Linux 2 de 64 bits

  • /var/log/docker-events.log

  • /var/log/eb-ecs-mgr.log

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/ecs/ecs-agent.log

  • /var/log/ecs/ecs-init.log

Go

.NET Core no Linux

Java/ramificação da plataforma: Corretto em execução no Amazon Linux 2 de 64 bits

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/web.stdout.log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

Node.js

Python

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/web.stdout.log

  • /var/log/httpd/access_log

  • /var/log/httpd/error_log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

Tomcat

PHP

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/httpd/access_log

  • /var/log/httpd/error_log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

.NET no Windows Server

  • C:\inetpub\logs\LogFiles\W3SVC1\u_ex*.log

  • C:\Program Files\Amazon\ElasticBeanstalk\logs\AWSDeployment.log

  • C:\Program Files\Amazon\ElasticBeanstalk\logs\Hooks.log

Ruby

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/puma/puma.log

  • /var/log/web.stdout.log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

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.

A tabela a seguir lista os arquivos de log transmitidos de instâncias em ramificações da plataforma com base na AMI do Amazon Linux (anterior ao Amazon Linux 2), por plataforma.

Plataforma/ramificação da plataforma

Logs

Docker/

ramificação da plataforma: Docker em execução no Amazon Linux de 64 bits

  • /var/log/eb-activity.log

  • /var/log/nginx/error.log

  • /var/log/docker-events.log

  • /var/log/docker

  • /var/log/nginx/access.log

  • /var/log/eb-docker/containers/eb-current-app/stdouterr.log

Docker/

ramificação da plataforma: Docker de vários contêineres em execução no Amazon Linux de 64 bits

  • /var/log/eb-activity.log

  • /var/log/ecs/ecs-init.log

  • /var/log/eb-ecs-mgr.log

  • /var/log/ecs/ecs-agent.log

  • /var/log/docker-events.log

Glassfish (Docker pré-configurado)

  • /var/log/eb-activity.log

  • /var/log/nginx/error.log

  • /var/log/docker-events.log

  • /var/log/docker

  • /var/log/nginx/access.log

Go

  • /var/log/eb-activity.log

  • /var/log/nginx/error.log

  • /var/log/nginx/access.log

Java/

ramificação da plataforma: Java 8 em execução no Amazon Linux de 64 bits

Ramificação da plataforma: Java 7 em execução no Amazon Linux de 64 bits

  • /var/log/eb-activity.log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

  • /var/log/web-1.error.log

  • /var/log/web-1.log

Tomcat

  • /var/log/eb-activity.log

  • /var/log/httpd/error_log

  • /var/log/httpd/access_log

  • /var/log/nginx/error_log

  • /var/log/nginx/access_log

Node.js

  • /var/log/eb-activity.log

  • /var/log/nodejs/nodejs.log

  • /var/log/nginx/error.log

  • /var/log/nginx/access.log

  • /var/log/httpd/error.log

  • /var/log/httpd/access.log

PHP

  • /var/log/eb-activity.log

  • /var/log/httpd/error_log

  • /var/log/httpd/access_log

Python

  • /var/log/eb-activity.log

  • /var/log/httpd/error_log

  • /var/log/httpd/access_log

  • /opt/python/log/supervisord.log

Ruby/

ramificação da plataforma: Puma com Ruby em execução no Amazon Linux de 64 bits

  • /var/log/eb-activity.log

  • /var/log/nginx/error.log

  • /var/log/puma/puma.log

  • /var/log/nginx/access.log

Ruby/

ramificação da plataforma: Passenger com Ruby em execução no Amazon Linux de 64 bits

  • /var/log/eb-activity.log

  • /var/app/support/logs/passenger.log

  • /var/app/support/logs/access.log

  • /var/app/support/logs/error.log

O Elastic Beanstalk configura grupos de logs no CloudWatch Logs para os vários arquivos de log dos quais ele faz streaming. Para recuperar arquivos de log específicos do CloudWatch Logs, é necessário saber o nome do grupo de logs correspondente. O esquema de nomenclatura do grupo de logs depende do sistema operacional da plataforma.

Para plataformas Linux, prefixe o local do arquivo de log na instância com /aws/elasticbeanstalk/environment_name para obter o nome do grupo de logs. Por exemplo, para recuperar o arquivo /var/log/nginx/error.log, especifique o grupo de logs /aws/elasticbeanstalk/environment_name/var/log/nginx/error.log.

Para plataformas Windows, consulte a tabela a seguir referente ao grupo de logs correspondente a cada arquivo de log.

Arquivo de log na instância

Grupo de logs

C:\Program Files\Amazon\ElasticBeanstalk\logs\AWSDeployment.log

/aws/elasticbeanstalk/<environment-name>/EBDeploy-Log

C:\Program Files\Amazon\ElasticBeanstalk\logs\Hooks.log

/aws/elasticbeanstalk/<environment-name>/EBHooks-Log

C:\inetpub\logs\LogFiles (todo o diretório)

/aws/elasticbeanstalk/<environment-name>/IIS-Log

Fazer streaming de logs de instâncias para o CloudWatch Logs

É possível habilitar o streaming de logs de instâncias para o CloudWatch Logs usando o console do Elastic Beanstalk, a CLI do EB ou as opções de configuração.

Antes de habilitá-lo, configure as permissões do IAM a serem usadas com o agente do CloudWatch Logs. Você pode anexar a seguinte política personalizada ao perfil da instância atribuído a seu ambiente.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": [ "*" ] } ] }

Streaming de logs de instâncias usando o console do Elastic Beanstalk

Como fazer streaming de logs de instâncias para o CloudWatch Logs
  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, escolha Configuration (Configuração).

  4. Na categoria de configuração Updates, monitoring, and logging (Atualizações, monitoramento e logs), escolha Edit (Editar).

  5. Em Instance log streaming to CloudWatch Logs (Streaming de logs de instância para o CloudWatch Logs):

    • Ative Log streaming (Streaming de logs).

    • Defina Retention (Retenção) com o número de dias para salvar os logs.

    • Selecione a configuração Lifecycle (Ciclo de vida) que determina se os logs devem ser salvos depois que o ambiente é encerrado.

  6. Para salvar as alterações, escolha Apply (Aplicar) na parte inferior da página.

Depois de ativar o streaming de logs, você poderá voltar para a categoria ou a página de configuração Software para encontrar o link Log Groups (Grupos de logs). Clique nesse link para ver logs no console do CloudWatch.

Streaming de logs de instância usando a EB CLI

Para habilitar o streaming de logs de instância para o CloudWatch Logs usando a CLI do EB, use o comando eb logs.

$ eb logs --cloudwatch-logs enable

Você também pode usar eb logs para recuperar logs do CloudWatch Logs. Você pode recuperar todos os logs de instância do ambiente ou usar as várias opções do comando para especificar subconjuntos de logs que devem ser recuperados. Por exemplo, o comando a seguir recupera o conjunto completo de logs de instância para seu ambiente e salva todos eles em um diretório em .elasticbeanstalk/logs.

$ eb logs --all

Especificamente, a opção --log-group permite que você recupere logs da instância de um grupo de logs específico, correspondente a um arquivo de log específico na instância. Para fazer isso, você precisa saber o nome do grupo de logs que corresponde ao arquivo de log que você deseja recuperar. Você pode encontrar essas informações em Como o Elastic Beanstalk configura o CloudWatch Logs.

Streaming de logs de instância usando arquivos de configuração

Ao criar ou atualizar um ambiente, você pode usar um arquivo de configuração para definir e configurar o streaming de logs de instância para o CloudWatch Logs. O exemplo de arquivo de configuração a seguir ativa o streaming de logs de instância padrão. O Elastic Beanstalk faz streaming do conjunto padrão de arquivos de log para a plataforma do ambiente. Para usar o exemplo, copie o texto em um arquivo com a extensão .config no diretório .ebextensions, no nível superior do pacote de origem do aplicativo.

option_settings: - namespace: aws:elasticbeanstalk:cloudwatch:logs option_name: StreamLogs value: true

Streaming do arquivo de log personalizado

A integração do Elastic Beanstalk ao CloudWatch Logs não é diretamente compatível com o streaming de arquivos de log personalizados gerados pela aplicação. Para transmitir logs personalizados, use um arquivo de configuração para instalar diretamente o agente do CloudWatch e configurar os arquivos a serem enviados. Para obter um arquivo de configuração demonstrativo, consulte logs-streamtocloudwatch-linux.config.

nota

O exemplo não funciona na plataforma Windows.

Para obter mais informações sobre a configuração dos logs do CloudWatch, consulte a referência de arquivos de configuração do agente do CloudWatch, no Guia do Usuário do Amazon CloudWatch.

Solucionar problemas de integração do CloudWatch Logs

Se não conseguir encontrar alguns dos logs de instância do ambiente que você espera encontrar no CloudWatch Logs, investigue os problemas comuns a seguir:

  • Sua função do IAM não tem as permissões do IAM necessárias.

  • Você iniciou o ambiente em uma região da Região da AWS que não é compatível com o CloudWatch Logs.

  • Um de seus arquivos de log personalizados não existe no caminho especificado.