Elastic Beanstalk 환경에서 Amazon EC2 인스턴스 로그 보기 - AWS Elastic Beanstalk

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

Elastic Beanstalk 환경에서 Amazon EC2 인스턴스 로그 보기

Elastic Beanstalk 환경의 Amazon EC2 인스턴스는 애플리케이션 및 구성 파일과 관련된 문제를 해결하는 데 도움이 되는 로그를 생성합니다. 웹 서버, 애플리케이션 서버, Elastic Beanstalk 플랫폼 스크립트 및 AWS CloudFormation에 의해 생성된 로그는 개별 인스턴스에 로컬로 저장됩니다. 환경 관리 콘솔 또는 EB CLI를 사용하여 쉽게 검색할 수 있습니다. Amazon CloudWatch Logs를 통해 로그를 실시간으로 스트리밍하도록 환경을 구성할 수도 있습니다.

테일 로그는 가장 일반적으로 사용되는 로그 파일(Elastic Beanstalk 작업 로그 및 웹 서버 또는 애플리케이션 서버 로그)의 마지막 100줄입니다. 환경 관리 콘솔 또는 eb logs를 사용하여 테일 로그를 요청하면 환경 인스턴스가 가장 최근 로그 항목을 연결하여 단일 텍스트 파일을 생성하고 이를 Amazon S3에 업로드합니다.

번들 로그는 다양한 로그 파일의 전체 집합 로그로, yum 및 cron 로그와 AWS CloudFormation의 여러 로그를 포함합니다. 번들 로그를 요청하면 환경 인스턴스가 전체 로그 파일을 ZIP 아카이브로 패키지하고 이를 Amazon S3에 업로드합니다.

참고

Elastic Beanstalk 윈도우 서버 플랫폼은 번들 로그를 지원하지 않습니다.

변경된 로그를 Amazon S3에 업로드하려면 Elastic Beanstalk Amazon S3 버킷에 사용될 권한이 있는 인스턴스 프로파일이 환경 인스턴스에 있어야 합니다. 이러한 권한은 처음으로 Elastic Beanstalk 콘솔에서 환경을 시작할 때 Elastic Beanstalk이 생성할 것을 지시하는 인스턴스 프로파일에 기본으로 포함되어 있습니다.

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

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

    참고

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

  3. 탐색 창에서 로그를 선택합니다.

  4. 로그 요청을 선택한 다음 검색할 로그 유형을 선택합니다. 테일 로그를 가져오려면 마지막 로그 100줄(Last 100 Lines)를 선택합니다. 번들 로그를 가져오려면 전체 로그(Full Logs)를 선택합니다.

    
          Elastic Beanstalk 콘솔의 환경 로그 페이지
  5. Elastic Beanstalk가 로그 검색을 마치면 다운로드(Download)를 선택합니다.

Elastic Beanstalk는 테일 및 번들 로그를 Amazon S3 버킷에 저장하며, 사용자의 로그 액세스에 사용할 수 있는 기서명된 Amazon S3 URL을 생성합니다. Elastic Beanstalk는 15분이 경과 후 파일을 Amazon S3에서 삭제합니다.

주의

삭제 전 기서명된 Amazon S3 URL 소유자는 파일에 액세스할 수 있습니다. 신뢰할 수 있는 당사자에게만 URL이 유효하도록 해야 합니다.

참고

사용자 정책에는 반드시 s3:DeleteObject 권한이 있어야 합니다. Elastic Beanstalk는 사용자 권한을 통해 Amazon S3에서 로그를 삭제합니다.

로그를 유지하려면 회전된 로그를 Amazon S3에 자동으로 게시하는 환경을 구성하면 됩니다. Amazon S3로 로그 회전를 활성화하려면 인스턴스 로그 보기 구성의 절차를 따르세요. 환경 인스턴스는 회전된 로그를 매 시간 업로드하려고 시도합니다.

환경 플랫폼 기본 구성의 일부가 아닌 위치에서 애플리케이션이 로그를 생성하는 경우, 구성 파일(.ebextensions)을 통해 기본 구성을 확장할 수 있습니다. 테일 로그, 번들 로그 또는 로그 회전에 애플리케이션 로그 파일을 추가할 수 있습니다.

실시간 로그 스트림 및 장기 저장의 경우 Amazon CloudWatch Logs를 통해 로그를 스트리밍하는 환경을 구성합니다.

Amazon EC2 인스턴스에서 로그 위치

로그는 환경 Amazon EC2 인스턴스의 표준 위치에 저장됩니다. Elastic Beanstalk는 다음 로그를 생성합니다.

Amazon Linux 2

  • /var/log/eb-engine.log

Amazon Linux AMI(AL1)

참고

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

  • /var/log/eb-activity.log

  • /var/log/eb-commandprocessor.log

Windows Server

  • C:\Program Files\Amazon\ElasticBeanstalk\logs\

  • C:\cfn\log\cfn-init.log

이러한 로그에는 구성 파일(.ebextensions)과 관련된 메시지를 비롯하여 배포 활동에 대한 메시지가 포함되어 있습니다.

각 애플리케이션과 웹 서버는 각각의 폴더에 로그를 저장합니다:

  • Apache/var/log/httpd/

  • IISC:\inetpub\wwwroot\

  • Node.js/var/log/nodejs/

  • nginx/var/log/nginx/

  • Passenger/var/app/support/logs/

  • Puma/var/log/puma/

  • Python/opt/python/log/

  • Tomcat/var/log/tomcat/

Amazon S3에서 로그 위치

환경에서 테일 또는 번들 로그를 요청하거나 인스턴스가 회전된 로그를 업로드하면, 이러한 로그는 Amazon S3의 Elastic Beanstalk 버킷에 저장됩니다. Elastic Beanstalk는 환경을 생성하는 각 AWS 리전에 대해 elasticbeanstalk-region-account-id라는 버킷을 생성합니다. 이 버킷 내의 로그는 경로 resources/environments/logs/logtype/environment-id/instance-id 아래에 저장됩니다.

예를 들어, 계정 123456789012에서 AWS 리전 us-west-2의 Elastic Beanstalk 환경 e-mpcwnwheky에 있는 인스턴스 i-0a1fd158의 로그는 다음 위치에 저장됩니다.

  • 테일 로그

    s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/tail/e-mpcwnwheky/i-0a1fd158

  • 번들 로그

    s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/bundle/e-mpcwnwheky/i-0a1fd158

  • 회전된 로그

    s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/publish/e-mpcwnwheky/i-0a1fd158

참고

환경 관리 콘솔에서 환경 ID를 찾을 수 있습니다.

Elastic Beanstalk는 테일 및 번들 로그가 생성된 후 15분이 지나면 Amazon S3에서 자동으로 삭제합니다. 회전된 로그는 이를 삭제하거나 S3 Glacier로 이동할 때까지 유지됩니다.

Linux에서 로그 회전 설정

Linux 플랫폼에서 Elastic Beanstalk는 logrotate를 사용하여 로그를 주기적으로 회전합니다. 구성된 경우 로컬에서 로그가 회전되면 로그 회전 작업에서 이를 수집하여 Amazon S3에 업로드합니다. 로컬에서 회전되는 로그는 기본적으로 테일 또는 번들 로그에 표시되지 않습니다.

/etc/logrotate.elasticbeanstalk.hourly/에서 logrotate에 대한 Elastic Beanstalk 구성 파일을 찾을 수 있습니다. 이러한 회전 설정은 플랫폼별로 다르며, 이후 플랫폼 버전에서 변경될 수 있습니다. 사용 가능한 설정에 대한 자세한 내용 및 구성 예제를 보려면 man logrotate를 실행하십시오.

구성 파일은 /etc/cron.hourly/에서 cron 작업으로 호출됩니다. cron에 대한 자세한 내용을 보려면 man cron을 실행하십시오.

기본 로그 작업 구성 확장

Elastic Beanstalk는 Amazon EC2 인스턴스에 있는 /opt/elasticbeanstalk/tasks(Linux) 또는 C:\Program Files\Amazon\ElasticBeanstalk\config(Windows Server)의 하위 폴더에 있는 파일을 사용하여 테일 로그, 번들 로그, 로그 회전에 대한 작업을 구성합니다.

Amazon Linux에서:

  • 테일 로그

    /opt/elasticbeanstalk/tasks/taillogs.d/

  • 번들 로그

    /opt/elasticbeanstalk/tasks/bundlelogs.d/

  • 회전된 로그

    /opt/elasticbeanstalk/tasks/publishlogs.d/

Windows Server에서:

  • 테일 로그

    c:\Program Files\Amazon\ElasticBeanstalk\config\taillogs.d\

  • 회전된 로그

    c:\Program Files\Amazon\ElasticBeanstalk\config\publogs.d\

예를 들어 Linux에서 eb-activity.conf 파일은 테일 로그 작업에 다음과 같은 2개의 로그 파일을 추가합니다.

/opt/elasticbeanstalk/tasks/taillogs.d/eb-activity.conf

/var/log/eb-commandprocessor.log /var/log/eb-activity.log

환경 구성 파일(.ebextensions)을 사용하여 직접 만든 .conf 파일을 이러한 폴더에 추가할 수 있습니다. .conf 파일에는 Elastic Beanstalk가 로그 파일 작업에 추가한 해당 애플리케이션의 로그 파일이 나열됩니다.

수정 작업에 구성 파일을 추가하려면 files 섹션을 사용합니다. 예를 들어 다음 구성 텍스트는 환경의 각 인스턴스에 로그 구성 파일을 추가합니다. 이 로그 구성 파일 cloud-init.conf/var/log/cloud-init.log를 테일 로그에 추가합니다.

files: "/opt/elasticbeanstalk/tasks/taillogs.d/cloud-init.conf" : mode: "000755" owner: root group: root content: | /var/log/cloud-init.log

.config라는 폴더 아래에서 소스 번들에 대한 파일 이름 확장명이 .ebextensions인 파일에 이 텍스트를 추가합니다.

~/workspace/my-app |-- .ebextensions | `-- tail-logs.config |-- index.php `-- styles.css

Linux 플랫폼에서는 로그 작업 구성에 와일드카드 문자를 사용할 수도 있습니다. 이 구성 파일은 애플리케이션 루트의 .log 폴더에서 파일 이름 확장명이 log인 모든 파일을 번들 로그에 추가합니다.

files: "/opt/elasticbeanstalk/tasks/bundlelogs.d/applogs.conf" : mode: "000755" owner: root group: root content: | /var/app/current/log/*.log

로그 작업 구성은 Windows 플랫폼에서 와일드카드 문자를 지원하지 않습니다.

참고

로그 사용자 지정 절차를 숙지하기 위해 EB CLI를 사용하여 샘플 애플리케이션을 배포할 수 있습니다. 이를 위해 EB CLI는 샘플 구성이 위치한 .ebextentions 하위 디렉터리를 포함한 로컬 애플리케이션 디렉터리를 생성합니다. 샘플 애플리케이션의 로그 파일을 사용하여 여기서 설명하는 로그 검색 기능을 탐색할 수도 있습니다. EB CLI를 사용하여 샘플 애플리케이션을 생성하는 방법에 대한 자세한 내용은 EB CLI 기본 사항을 참조하십시오.

구성 파일 사용에 대한 자세한 내용은 구성 파일(.ebextensions)을 사용하여 고급 환경 사용자 지정을 참조하세요.

테일 로그와 번들 로그를 연장하듯 로그 회전도 구성 파일을 사용하여 연장할 수 있습니다. Elastic Beanstalk는 자체 로그를 회전하여 Amazon S3에 업로드할 때마다 추가 로그로 회전하고 업로드합니다. 로그 회전 연장은 플랫폼의 운영 체제에 따라 다르게 동작합니다. 다음 섹션에서는 두 가지 경우에 대해 설명합니다.

Linux에서 로그 회전 연장

Linux에서 로그 회전 설정의 설명에 따라 Elastic Beanstalk는 Linux 플랫폼에서 logrotate를 사용하여 로그를 회전합니다. 애플리케이션 로그 파일을 장기 회전으로 구성한 경우 애플리케이션에서 로그 파일 사본을 생성할 필요가 없습니다. Elastic Beanstalk는 애플리케이션의 로그 파일을 회전할 때마다 복사본을 만들도록 logrotate를 구성합니다. 따라서 애플리케이션에서 능동적으로 작성하지 않는 경우 로그 파일을 잠금 해제 상태로 유지해야 합니다.

Windows Server에서 로그 회전 연장

Windows Server에서 애플리케이션 로그 파일을 장기 회전으로 구성한 경우 애플리케이션에서 로그 파일을 정기적으로 회전해야 합니다. Elastic Beanstalk는 사용자가 구성한 패턴으로 시작하는 이름을 가진 파일을 찾아서 선택한 후 Amazon S3에 업로드합니다. 또한 파일 이름의 점은 무시되고, Elastic Beanstalk는 점 이전의 이름까지만 고려하며 이 이름이 기존 로그 파일 이름이 됩니다.

Elastic Beanstalk는 최신 파일을 유효한 애플리케이션 로그 파일(잠길 수 있음)로 간주하기 때문에 최신 버전을 제외한 모든 버전의 기본 로그 파일을 업로드합니다. 따라서 애플리케이션은 각 회전 사이의 유효한 로그 파일을 잠금 상태로 유지할 수 있습니다.

애플리케이션에서 my_log.log라는 로그 파일을 작성하고, 사용자가 해당 .conf 파일에 이 이름을 지정하는 경우를 예로 들어보겠습니다. 애플리케이션은 파일을 정기적으로 회전합니다. Elastic Beanstalk는 회전 주기 동안 로그 파일 폴더에서 my_log.log, my_log.0800.log, my_log.0830.log라는 파일을 찾습니다. Elastic Beanstalk는 이 모든 파일을 기본 이름 my_log의 버전으로 간주합니다. my_log.log 파일은 최신 수정 시간을 포함하므로 Elastic Beanstalk는 다른 두 개의 파일인 my_log.0800.logmy_log.0830.log만 업로드합니다.

Amazon CloudWatch Logs로의 로그 파일 스트리밍

Elastic Beanstalk 콘솔에서 또는 구성 옵션을 사용하여 로그를 Amazon CloudWatch Logs로 스트리밍하도록 환경을 구성할 수 있습니다. CloudWatch Logs은 환경의 각 인스턴스는 환경이 종료된 후에도 몇 주 또는 몇 년간 보존하도록 구성하는 로그 그룹으로 로그를 스트리밍합니다.

스트리밍되는 로그 세트는 환경에 따라 다르지만, 항상 eb-engine.log와 애플리케이션 앞에서 실행되는 nginx 또는 Apache 프록시 서버의 액세스 로그가 포함됩니다.

환경 생성 중 또는 기존 환경과 관련하여 Elastic Beanstalk 콘솔에서 로그 스트리밍을 구성할 수 있습니다. 다음 예제에서 로그는 환경이 종료된 경우에도 최대 7일 동안 저장됩니다.


        CloudWatch Logs 설정

다음 구성 파일은 환경이 종료된 후에도 180일 보존으로 로그 스트리밍을 활성화합니다.

예 .ebextensions/log-streaming.config
option_settings: aws:elasticbeanstalk:cloudwatch:logs: StreamLogs: true DeleteOnTerminate: false RetentionInDays: 180