Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

473
Visualizações
Elastic Beanstalk Single Container Docker: use el controlador de registro awslogs

Estoy ejecutando un solo contenedor Docker en Elastic Beanstalk usando su Configuración de Docker de contenedor único e intento enviar la salida estándar de la aplicación a CloudWatch usando el controlador de registro awslogs .

EB busca un archivo Dockerrun.aws.json para la configuración del contenedor, pero por lo que puedo ver, no tiene la opción de usar awslogs como controlador de registro del contenedor (o agregar otras marcas al comando docker run para ese asunto).

Intenté piratear el comando de docker run usando la respuesta proporcionada aquí , agregando un archivo .ebextensions/01-commands.config con contenido:

 commands: add_awslogs: command: 'sudo sed -i "s/docker run -d/docker run --log-driver=awslogs --log-opt awslogs-region=eu-west-2 --log-opt awslogs-group=dockerContainerLogs -d/" /opt/elasticbeanstalk/hooks/appdeploy/enact/00run.sh'

Esto funciona, en el sentido de que modifica el script de ejecución y los registros aparecen en CloudWatch.

Pero la aplicación EB muere. El contenedor está arriba, pero no responde a las solicitudes.

Encuentro el siguiente error en los registros del contenedor:

El comando "logs" solo es compatible con los controladores de registro "json-file" y "journald" (obtenido: awslogs)

Encuentro respuestas a preguntas similares relacionadas con ECS (no EB) que sugieren agregar ECS_AVAILABLE_LOGGING_DRIVERS con awslogs. Pero no encuentro este ajuste de configuración en EB.

¿Alguna idea?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Estoy publicando aquí la respuesta que recibí del soporte de AWS:

Dado que el entorno de un solo contenedor de Elastic Beanstalk guardará el stdout y el stderr en /var/log/eb-docker/containers/eb-current-app/ de forma predeterminada, y dado que la nueva pila de soluciones le permite la opción de transmitir registros a cloudwatch, automatizando la configuración del agente de AWSLogs en las instancias, lo que recomiendo hacer es agregar una extensión eb para agregar los archivos de registro stdout y stderr a la configuración de cloudwatch y usar el agente ya configurado para transmitir esos archivos a los registros de cloudwatch. en lugar de tocar los ganchos previos, que AWS no admite, ya que los ganchos pueden cambiar de una versión de pila de solución a otra.

Con respecto al error que está viendo, el comando "logs" solo es compatible con los controladores de registro "json-file" y "journald" (obtenido: awslogs)", este error se debe a cómo funciona Docker, cuando está configurado para enviar registros a otro controlador al lado json-file o journald no podrá mostrar registros localmente ya que no tiene una copia local de ellos.

 ### BEGIN .ebextensions/logs.config option_settings: - namespace: aws:elasticbeanstalk:cloudwatch:logs option_name: StreamLogs value: true - namespace: aws:elasticbeanstalk:cloudwatch:logs option_name: DeleteOnTerminate value: false - namespace: aws:elasticbeanstalk:cloudwatch:logs option_name: RetentionInDays value: 7 files: "/etc/awslogs/config/stdout.conf": mode: "000755" owner: root group: root content: | [docker-stdout] log_group_name=/aws/elasticbeanstalk/environment_name/docker-stdout log_stream_name={instance_id} file=/var/log/eb-docker/containers/eb-current-app/*-stdouterr.log commands: "00_restart_awslogs": command: service awslogs restart ### END .ebextensions/logs.config
over 4 years ago · Santiago Trujillo Relatório

0

Pude ampliar la respuesta anterior para un entorno de beanstalk elástico de varios contenedores, así como inyectar el nombre del entorno. Tuve que otorgar el permiso correcto en el rol de ec2 para poder crear el grupo de registros. Puedes ver si está funcionando mirando en:

 /var/log/awslogs.log

esto va en .ebextensions/logs.config

 option_settings: - namespace: aws:elasticbeanstalk:cloudwatch:logs option_name: StreamLogs value: true - namespace: aws:elasticbeanstalk:cloudwatch:logs option_name: DeleteOnTerminate value: false - namespace: aws:elasticbeanstalk:cloudwatch:logs option_name: RetentionInDays value: 14 files: "/etc/awslogs/config/stdout.conf": mode: "000755" owner: root group: root content: | [/var/log/containers/docker-stdout] log_group_name=/aws/elasticbeanstalk/`{ "Ref" : "AWSEBEnvironmentName" }`/docker-stdout.log log_stream_name={instance_id} file=/var/log/containers/*-stdouterr.log commands: "00_restart_awslogs": command: service awslogs restart
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda