Amazon CloudWatch Logs에서 Elastic Beanstalk 사용 - AWS Elastic Beanstalk

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon CloudWatch Logs에서 Elastic Beanstalk 사용

CloudWatch Logs를 사용하여, 해당 환경의 Amazon EC2 인스턴스의 Elastic Beanstalk 애플리케이션, 시스템 및 사용자 지정 로그 파일을 모니터링하고 아카이브할 수 있습니다. 또한 측정치 필터로 추출된 특정 로그 스트림 이벤트에 잘 대응하도록 경보를 구성할 수도 있습니다. 사용자 환경의 각 Amazon EC2 인스턴스에 설치된 CloudWatch Logs 에이전트는 사용자가 구성한 로그 그룹별로 측정치 데이터 요소를 CloudWatch 서비스에 게시합니다. 각 로그 그룹은 고유한 필터 패턴을 적용하여 데이터 포인트로 CloudWatch에전송할 로그 스트림 이벤트를 결정합니다. 동일한 로그 그룹에 속한 로그 스트림은 동일한 보존 기간, 모니터링 및 액세스 제어 설정을 공유합니다. CloudWatch Logs로 인스턴스 로그 스트리밍에서 설명한 것과 같이 CloudWatch 서비스를 통해 Elastic Beanstalk를 구성하여 로그가 자동 스트리밍하도록 할 수 있습니다. 용어 및 개념을 비롯한 CloudWatch Logs 관련 자세한 내용은 Amazon CloudWatch Logs 사용 설명서를 참조하세요.

인스턴스 로그 외에도, 환경의 확장 상태를 활성화하면 CloudWatch Logs로 상태 정보를 스트리밍하는 환경을 구성할 수 있습니다. Elastic Beanstalk 환경 상태 정보를 Amazon CloudWatch Logs로 스트리밍을 참조하세요.

다음 그림은 모니터링 페이지와, CloudWatch Logs 통합으로 구성된 환경 그래프를 보여 줍니다. 이 환경의 예제 측정치는 CWLHttp4xxCWLHttp5xx입니다. 한 그래프는 CWLHttp4xx 측정치가 구성 파일에 지정된 조건에 따라 경보를 트리거했음을 보여 줍니다.

다음 그림은 경보 페이지와 CWLHttp4xxCWLHttp5xx 지표에 해당하는 AWSEBCWLHttp4xxPercentAlarmAWSEBCWLHttp5xxCountAlarm이라는 경보 예제의 그래프를 보여 줍니다.

CloudWatch Logs로 인스턴스 로그 스트림을 하기 위한 선행 조건

해당 환경의 Amazon EC2 인스턴스 로그를 CloudWatch Logs로 스트리밍하려면 다음 조건을 갖춰야 합니다.

  • 플랫폼 - 이 기능은 본 릴리스 이후 버전의 플랫폼에서만 사용할 수 있기 때문에 이전 플랫폼 버전을 사용하고 있는 경우 최신 플랫폼 버전으로 환경을 업데이트해야 합니다.

  • Elastic Beanstalk 인스턴스 프로파일AWSElasticBeanstalkWebTier 또는 AWSElasticBeanstalkWorkerTier Elastic Beanstalk 관리형 정책이 없는 경우 프로파일에 다음을 추가하여 이 기능을 활성화해야 합니다.

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

Elastic Beanstalk로 CloudWatch Logs를 설정하는 방법

Elastic Beanstalk는 생성하는 각 인스턴스의 기본 구성 설정으로 CloudWatch Logs 에이전트를 설치합니다. CloudWatch Logs 에이전트 참조에서 자세히 알아보세요.

CloudWatch Logs로의 인스턴스 로그 스트리밍을 활성화하면 Elastic Beanstalk가 해당 환경 인스턴스의 로그 파일을 CloudWatch Logs로 전송합니다. 플랫폼마다 상이한 로그를 스트리밍합니다. 다음 표에는 플랫폼별 로그가 나열되어 있습니다.

플랫폼 / 플랫폼 브랜치

로그

도커 /

플랫폼 브랜치: 64비트 Amazon Linux 2에서 실행되는 도커

  • /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 /

플랫폼 브랜치: 64비트 Amazon Linux 2에서 실행되는 ECS

  • /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

Linux의 .NET Core

Java / 플랫폼 브랜치: 64비트 Amazon Linux 2에서 실행되는 Corretto

  • /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

Windows Server의 .NET

  • 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

참고

2022년 7월 18일 Elastic Beanstalk는 Amazon Linux AMI(AL1) 에 기반한 모든 플랫폼 브랜치의 상태를 사용 중지로 설정했습니다. 완전 지원이 가능한 현재 Amazon Linux 2023 플랫폼 브랜치로 마이그레이션하는 방법에 대한 자세한 내용은 Elastic Beanstalk Linux 애플리케이션을 Amazon Linux 2023 또는 Amazon Linux 2로 마이그레이션을(를) 참조하세요.

다음 표에는 Amazon Linux AMI(이전 Amazon Linux 2) 기반 플랫폼 브랜치의 인스턴스에서 스트리밍되는 로그 파일이 플랫폼별로 나열되어 있습니다.

플랫폼 / 플랫폼 브랜치

로그

Docker /

플랫폼 브랜치: 64비트 Amazon Linux에서 실행되는 Docker

  • /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 /

플랫폼 브랜치: 64비트 Amazon Linux에서 실행되는 멀티컨테이너 Docker

  • /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)

  • /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 /

플랫폼 브랜치: 64비트 Amazon Linux에서 실행되는 Java 8

플랫폼 브랜치: 64비트 Amazon Linux에서 실행되는 Java 7

  • /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 /

플랫폼 브랜치: 64비트 Amazon Linux에서 실행되는 Puma with Ruby

  • /var/log/eb-activity.log

  • /var/log/nginx/error.log

  • /var/log/puma/puma.log

  • /var/log/nginx/access.log

Ruby /

플랫폼 브랜치: 64비트 Amazon Linux에서 실행되는 Passenger with Ruby

  • /var/log/eb-activity.log

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

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

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

Elastic Beanstalk는 CloudWatch Logs에서 스트리밍하는 다양한 로그 파일의 로그 그룹을 구성합니다. CloudWatch Logs에서 특정 로그 파일을 검색하려면 해당 로그 그룹의 이름을 알아야 합니다. 로그 그룹 이름 지정 규칙은 플랫폼 운영 체제에 따라 다릅니다.

Linux 플랫폼의 경우 로그 그룹 이름을 얻기 위해서는 인스턴스 로그 파일 위치 앞에 /aws/elasticbeanstalk/environment_name를 붙여야 합니다. 예를 들어 /var/log/nginx/error.log 파일을 검색하려면 로그 그룹 /aws/elasticbeanstalk/environment_name/var/log/nginx/error.log를 지정합니다.

Windows 플랫폼의 경우 다음 표에서 각 로그 파일에 해당하는 로그 그룹을 참조하십시오.

온 인스턴스 로그 위치

로그 그룹

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 (전체 디렉터리)

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

CloudWatch Logs로 인스턴스 로그 스트리밍

Elastic Beanstalk 콘솔, EB CLI 또는 구성 옵션을 사용하여 CloudWatch Logs로의 인스턴스 로그 스트리밍을 활성화할 수 있습니다.

활성화하기 전에 CloudWatch Logs 에이전트와 함께 사용할 IAM 권한을 설정합니다. 환경으로 할당하는 인스턴스 프로파일에 다음 사용자 지정 정책을 연결할 수 있습니다.

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

Elastic Beanstalk 콘솔을 사용한 인스턴스 로그 스트리밍

인스턴스 로그를 CloudWatch Logs로 스트리밍하려면
  1. Elastic Beanstalk 콘솔을 연 다음 리전(Regions) 목록에서 해당 AWS 리전을 선택합니다.

  2. 탐색 창에서 환경을 선택한 다음 목록에서 환경 이름을 선택합니다.

    참고

    여러개의 환경을 보유한 경우 검색 창을 통해 환경 목록을 필터링합니다.

  3. 탐색 창에서 구성을 선택합니다.

  4. 업데이트, 모니터링 및 로깅 구성 범주에서 편집을 선택합니다.

  5. CloudWatch Logs로 인스턴스 로그 스트리밍에서 다음을 수행합니다.

    • 로그 스트리밍을 활성화합니다.

    • 보존에 로그 저장 일수를 설정합니다.

    • 환경이 종료된 후 로그를 저장할지 여부를 지정하는 수명 주기 설정을 선택합니다.

  6. 변경 사항을 저장하려면 페이지 하단에서 적용을 선택합니다.

로그 스트리밍을 활성화한 후 소프트웨어 구성 범주나 페이지로 돌아와서 로그 그룹 링크를 확인합니다. 이 링크를 클릭하여 CloudWatch 콘솔에서 로그를 확인합니다.

EB CLI를 통해 인스턴스 로그 스트리밍

EB CLI를 사용하여 CloudWatch Logs로 인스턴스 로그 스트리밍을 활성화하려면 eb logs 명령을 사용합니다.

$ eb logs --cloudwatch-logs enable

eb logs를 사용하여 CloudWatch Logs의 로그를 검색할 수도 있습니다. 모든 환경의 인스턴스 로그를 검색하거나, 명령의 다양한 옵션을 사용하여 검색할 하위 로그를 지정할 수 있습니다. 예를 들어 다음 명령은 해당 환경에 대한 전체 인스턴스 로그를 검색하고 이러한 로그를 .elasticbeanstalk/logs 아래의 디렉터리에 저장합니다.

$ eb logs --all

특히 --log-group 옵션을 사용하면 특정 온 인스턴스 로그 파일에 해당하는 로그 그룹의 인스턴스 로그를 검색할 수 있습니다. 이를 위해 검색하려는 로그 파일이 속한 로그 그룹의 이름을 알아야 합니다. 이 정보는 Elastic Beanstalk로 CloudWatch Logs를 설정하는 방법에서 확인할 수 있습니다.

구성 파일을 통한 인스턴스 로그 스트리밍

환경을 만들거나 업데이트할 때 구성 파일을 사용하여 CloudWatch Logs로의 인스턴스 로그 스트리밍을 설정하고 구성할 수 있습니다. 다음 예제 구성 파일은 기본 인스턴스 로그 스트리밍을 활성화합니다. Elastic Beanstalk는 해당 환경 플랫폼에 대한 기본 로그 파일을 스트리밍합니다. 예제를 사용하려면 텍스트를 복사한 후, 해당 애플리케이션 소스 번들 최상위 .ebextensions 디렉터리에서 확장명이 .config인 파일에 붙여넣습니다.

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

사용자 지정 로그 파일 스트리밍

CloudWatch Logs와 Elastic Beanstalk의 통합은 애플리케이션에서 생성하는 사용자 지정 로그 파일의 스트리밍을 직접 지원하지 않습니다. 사용자 지정 로그를 스트리밍하려면 구성 파일을 사용하여 CloudWatch Logs 에이전트를 직접 설치하고 파일이 푸시될 수 있도록 구성합니다. 예제 구성 파일은 logs-streamtocloudwatch-linux.config을 참조하세요.

참고

예제는 Windows 플랫폼에서 작동하지 않습니다.

CloudWatch Logs 구성에 대한 자세한 내용은 Amazon CloudWatch Logs 사용 설명서CloudWatch Logs 에이전트 사용자 설명서를 참조하세요.

CloudWatch Logs 통합 문제 해결

CloudWatch Logs에서 원하는 환경 인스턴스 로그의 일부를 찾을 수 없는 경우 다음의 일반 문제를 확인하세요:

  • IAM 역할에 필요한 IAM 권한이 없습니다.

  • CloudWatch Logs를 지원하지 않는 AWS 리전에서 환경을 실행했습니다.

  • 사용자 지정 로그 파일 중 하나가 해당 경로에 없습니다.