
Tengo una aplicación Tomcat en Elastic Beanstalk y quiero enviar registros a Cloudwatch Logs. Con ese fin, configuré log4j para escribir en un archivo, y en .ebextension
, amazon-cloudwatch-agent
se instala y se ejecuta.
commands:
# 00_download_and_install:
# command: rpm --upgrade --force https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
01_start:
command: /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json -s
packages:
yum:
amazon-cloudwatch-agent: []
files:
"/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json":
content: |
{...
}
Desafortunadamente, cada vez que implemento la aplicación en Elastic Beanstalk, el agente se apaga y tengo que reiniciarlo manualmente a través de ssh.
Respuesta1
Si configura la transmisión de registros predeterminada como deshabilitada en la configuración del entorno, Beanstalk detendrá el agente de Cloudwatch durante la implementación. Desafortunadamente, lo hace poco después de que se ejecuta el comando ebextension para iniciar el agente.
Para resolver este problema, utilicé un enlace posterior a la implementación de la plataforma, que se ejecuta después de la implementación y, por lo tanto, anula el cierre del agente desde el valor predeterminado de Beanstalk.
Simplemente coloque un script de shell que contenga el comando de inicio en ./platform/hooks/postdeploy/ en su paquete de aplicación.