Amazon-cloudwatch-agent는 애플리케이션을 다시 로드할 때마다 종료됩니다.

Amazon-cloudwatch-agent는 애플리케이션을 다시 로드할 때마다 종료됩니다.

Elastic Beanstalk에 Tomcat 앱이 있고 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 명령이 실행된 직후에 발생합니다.

이 문제를 해결하기 위해 배포 후 실행되는 플랫폼 배포 후 후크를 사용하여 beanstalk 기본값에서 에이전트 종료를 재정의했습니다.

애플리케이션 번들의 ./platform/hooks/postdeploy/에 시작 명령이 포함된 셸 스크립트를 넣기만 하면 됩니다.

관련 정보