amazon-cloudwatch-agent завершает работу при каждой перезагрузке приложения

amazon-cloudwatch-agent завершает работу при каждой перезагрузке приложения

У меня есть приложение Tomcat на Elastic Beanstalk, и я хочу отправлять логи в Cloudwatch Logs. Для этого я настроил log4j на запись в файл, а в .ebextension, amazon-cloudwatch-agentустанавливается и запускается.

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: |
       {...
       }

К сожалению, каждый раз, когда я развертываю приложение в Elastic Beanstalk, агент завершает работу, и мне приходится перезапускать его вручную через ssh.

решение1

Если вы отключите потоковую передачу журналов по умолчанию в конфигурации среды, то Beanstalk остановит агента cloudwatch во время развертывания. К сожалению, это происходит вскоре после выполнения команды ebextension для запуска агента.

Чтобы решить эту проблему, я использовал хук платформы postdeploy, который выполняется после развертывания и, таким образом, переопределяет завершение работы агента по умолчанию в Beanstalk.

Просто поместите скрипт оболочки, содержащий команду запуска, в ./platform/hooks/postdeploy/ в вашем пакете приложения.

Связанный контент