awslogs 로그 드라이버 사용 - Amazon Elastic Container Service

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

awslogs 로그 드라이버 사용

CloudWatch Logs로 로그 정보를 전송하도록 작업의 컨테이너를 구성할 수 있습니다. 을(를) 사용하는 경우 Fargate 작업의 실행 유형으로, 컨테이너의 로그를 볼 수 있습니다. 을(를) 사용하는 경우 EC2 실행 유형 - 컨테이너에서 여러 로그를 하나의 편리한 위치에서 볼 수 있으며 컨테이너 로그가 컨테이너 인스턴스에서 디스크 공간을 차지하지 않도록 합니다. 이 주제는 awslogs 태스크 정의의 로그 드라이버.

참고

작업의 컨테이너에서 기록되는 정보 유형은 대부분 ENTRYPOINT 명령에 따라 결정됩니다. 기본적으로 수집되는 로그는 컨테이너를 로컬에서 실행했을 때 일반적으로 대화식 터미널에 표시되는 명령 출력(STDOUTSTDERR I/O 스트림)을 나타냅니다. awslogs 로그 드라이버는 이러한 로그를 도커에서 CloudWatch Logs로 전달하는 역할만 합니다. 다른 파일 데이터 또는 스트림을 수집할 수 있는 대체 방법을 포함해 도커 로그가 처리되는 방식에 대한 자세한 내용은 도커 설명서에서 컨테이너 또는 서비스 로그 보기 단원을 참조하십시오.

Amazon ECS 컨테이너 인스턴스에서 CloudWatch Logs로 시스템 로그를 전송하려면 사용 CloudWatch Logs 컨테이너 인스턴스 포함 단원을 참조하십시오. 에 대한 추가 정보 CloudWatch Logs, 참조 로그 파일 모니터링CloudWatch Logs 할당량 에서 Amazon CloudWatch Logs User Guide.

컨테이너에 대한 awslogs 로그 드라이버 사용

해당 작업에 Fargate 시작 유형을 사용하는 경우, awslogs 로그 드라이버를 활성화하려면 해당 작업 정의에 필수 logConfiguration 파라미터를 추가하면 됩니다. 자세한 정보는 태스크 정의에서 로그 구성 지정 단원을 참조하십시오.

해당 작업에 EC2 시작 유형을 사용하는 경우 awslogs 로그 드라이버를 활성화하려면 Amazon ECS 컨테이너 인스턴스에 버전 1.9.0 이상의 컨테이너 에이전트가 필요합니다. 에이전트 버전을 확인하고 최신 버전으로 업데이트하는 방법에 대한 자세한 내용은 Amazon ECS 컨테이너 에이전트 업데이트 단원을 참조하십시오.

참고

컨테이너 인스턴스에 Amazon ECS 최적화 AMI(버전 1.9.0-1 이상의 ecs-init 패키지 포함)를 사용하지 않는 경우에는 docker run 문 또는 환경 변수 파일에서 다음 환경 변수를 사용하여 에이전트를 시작할 때 awslogs 로깅 드라이버를 사용 가능하도록 지정도 해야 합니다. 자세한 정보는 Amazon ECS 컨테이너 에이전트 설치 단원을 참조하십시오.

ECS_AVAILABLE_LOGGING_DRIVERS='["json-file","awslogs"]'

또한 Amazon ECS 컨테이너 인스턴스는 컨테이너 인스턴스를 시작할 때 사용하는 IAM 역할에 logs:CreateLogStreamlogs:PutLogEvents 권한도 요구합니다. Amazon ECS에서 awslogs 로그 드라이버를 활성화하기 전에 Amazon ECS 컨테이너 인스턴스 역할을 생성한 경우 이 권한을 추가해야 할 수 있습니다. 컨테이너 인스턴스가 컨테이너 인스턴스에 대한 관리형 IAM 정책을 사용하는 경우 컨테이너 인스턴스에 올바른 권한이 부여되어야 합니다. Amazon ECS 컨테이너 인스턴스 역할을 확인하고 컨테이너 인스턴스에 대한 관리형 IAM 정책을 연결하려면 IAM 콘솔에서 ecsInstanceRole를 확인하려면 단원을 참조하십시오.

로그 그룹 생성

awslogs 로그 드라이버는 로그 스트림을 CloudWatch Logs의 기존 로그 그룹에 전송할 수 있거나 사용자를 대신하여 새 로그 그룹을 생성할 수 있습니다. AWS Management 콘솔는 ecs를 접두사로 사용하는 작업 정의 패밀리 이름을 사용하여 사용자 대신에 로그 그룹을 생성하는 자동 구성 옵션을 제공합니다. 또한 사용자가 로그 구성 옵션을 수동으로 지정하고 사용자 대신에 로그 그룹을 생성하게 될 true의 값을 가진 awslogs-create-group 옵션을 지정할 수 있습니다.

참고

awslogs-create-group 옵션을 사용하여 로그 그룹을 생성하도록 하려면 IAM 정책에 logs:CreateLogGroup 권한이 포함되어 있어야 합니다.

자동 구성 기능을 사용하여 로그 그룹 생성

Amazon ECS 콘솔에서 작업 정의를 등록하는 경우, Amazon ECS가 CloudWatch 로그를 자동 구성하도록 허용하는 옵션이 있습니다. 이 옵션은 ecs를 접두사로 사용하는 작업 정의 패밀리 이름을 사용하여 사용자를 대신하여 로그 그룹을 생성합니다.

Amazon ECS 콘솔에서 로그 그룹 자동 구성 옵션을 사용하려면

  1. https://console.aws.amazon.com/ecs/에서 Amazon ECS 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 작업 정의, Create new Task Definition(새 작업 정의 생성)을 선택합니다.

  3. 호환성 옵션을 선택한 후 다음 단계를 선택합니다.

  4. Add container를 선택합니다.

  5. 에서 저장 및 로깅 섹션, 대상 로그 구성, 선택 자동 구성 CloudWatch 로그.

  6. awslogs 로그 드라이버 옵션을 입력합니다. 자세한 정보는 태스크 정의에서 로그 구성 지정 단원을 참조하십시오.

  7. 작업 정의 마법사의 나머지 단계를 완료합니다.

사용 가능한 awslogs 로그 드라이버 옵션

awslogs 로그 드라이버는 Amazon ECS 작업 정의에서 다음 옵션을 지원합니다. 자세한 내용은 CloudWatch Logs 로깅 드라이버 단원을 참조하십시오.

awslogs-create-group

필수: 아니요

로그 그룹을 자동으로 생성할지 여부를 지정합니다. 이 옵션이 지정되지 않은 경우 기본적으로 false로 설정됩니다.

참고

awslogs-create-group을 사용하기 전에 IAM 정책이 logs:CreateLogGroup 권한을 포함해야 합니다.

awslogs-region

필수: 예

awslogs 로그 드라이버가 도커 로그를 전송할 리전을 지정합니다. 여러 리전의 클러스터로부터 모든 로그를 CloudWatch Logs 내 단일 리전으로 전송하여 단일 위치에서 모든 로그를 보거나 보다 세밀한 확인을 위해 로그를 리전별로 구분할 수 있습니다. 지정한 로그 그룹이 이 옵션으로 지정한 리전에 위치하는지 확인하십시오.

awslogs-endpoint

필수: 아니요

기본적으로 Docker는 awslogs-region 로그 옵션 또는 감지된 리전을 사용하여 원격 CloudWatch Logs API 엔드포인트를 구성합니다. awslogs-endpoint 로그 옵션을 사용하여 기본 엔드포인트를 제공된 엔드포인트로 재정의합니다.

awslogs-group

필수: 예

awslogs 로그 드라이버가 로그 스트림을 전송할 로그 그룹을 지정해야 합니다. 자세한 정보는 로그 그룹 생성 단원을 참조하십시오.

awslogs-stream-prefix

필수: 선택 사항 EC2 실행 유형, 에 필요 Fargate 실행 유형.

awslogs-stream-prefix 옵션을 사용하여 로그 스트림을 지정한 접두사, 컨테이너 이름 및 컨테이너가 속하는 Amazon ECS 작업의 ID와 연결할 수 있습니다. 이 옵션을 사용하여 접두사를 지정하는 경우 로그 스트림은 다음 형식을 취합니다.

prefix-name/container-name/ecs-task-id

이 옵션을 사용하여 접두사를 지정하지 않는 경우 로그 스트림 이름이 컨테이너 인스턴스의 도커 데몬에 의해 할당된 컨테이너 ID를 따서 지정됩니다. 도커 컨테이너 ID(컨테이너 인스턴스에서만 사용 가능)만으로는 로그를 전송한 컨테이너로 역추적하기 어려우므로 이 옵션에서 접두사를 지정하는 것이 좋습니다.

Amazon ECS 서비스의 경우 서비스 이름을 접두사로 사용할 수 있습니다. 그러면 로그 스트림을 컨테이너가 속하는 서비스, 로그를 전송한 컨테이너의 이름, 컨테이너가 속하는 작업의 ID로 추적할 수 있습니다.

Amazon ECS 콘솔을 사용할 때 로그 창에 로그가 표시되도록 하기 위해서는 해당 로그에 스트림 접두사를 지정해야 합니다.

awslogs-datetime-format

필수: 아니요

이 옵션은 Python strftime 형식의 여러 줄 시작 패턴을 정의합니다. 로그 메시지는 패턴과 일치하는 하나의 줄과 패턴과 일치하지 않는 나머지 줄들로 이루어져 있습니다. 따라서 일치하는 줄은 로그 메시지 간의 구분 기호입니다.

이 형식을 사용하는 사용 사례의 한 예는 스택 덤프와 같은 출력을 구문 분석하는 것이며, 그렇지 않으면 여러 항목에 기록될 수 있습니다. 올바른 패턴을 통해 단일 항목으로 캡처할 수 있습니다.

자세한 내용은 awslogs-datetime-format을 참조하십시오.

awslogs-datetime-formatawslogs-multiline-pattern이 모두 구성된 경우, 이 옵션은 항상 우선순위를 갖습니다.

참고

여러 줄 로깅은 모든 로그 메시지의 정규식 구문 분석 및 일치 작업을 수행하므로 로깅 성능에 부정적인 영향을 줄 수 있습니다.

awslogs-multiline-pattern

필수: 아니요

이 옵션은 정규식을 사용하여 여러 줄 시작 패턴을 정의합니다. 로그 메시지는 패턴과 일치하는 하나의 줄과 패턴과 일치하지 않는 나머지 줄들로 이루어져 있습니다. 따라서 일치하는 줄은 로그 메시지 간의 구분 기호입니다.

자세한 내용은 awslogs-multiline-pattern을 참조하십시오.

이 옵션은 awslogs-datetime-format을 구성하는 경우에 무시됩니다.

참고

여러 줄 로깅은 모든 로그 메시지의 정규식 구문 분석 및 일치 작업을 수행합니다. 이는 로깅 성능에 부정적인 영향을 줄 수 있습니다.

mode

필수: 아니요

유효한 값: non-blocking | blocking

기본값: blocking

컨테이너에서 로 로그 메시지의 배달 모드 awslogs. 자세한 내용은 을 참조하십시오. 로깅 드라이버 구성.

max-buffer-size

필수: 아니요

기본값: 1m

언제 non-blocking 모드가 사용되는 경우 max-buffer-size 로그 옵션은 중간 메시지 저장에 사용되는 링 버퍼의 크기를 제어합니다.

태스크 정의에서 로그 구성 지정

컨테이너가 CloudWatch로 로그를 전송할 수 있으려면 작업 정의에서 컨테이너에 대한 awslogs 로그 드라이버를 지정해야 합니다. 이 단원에서는 awslogs 로그 드라이버를 사용할 컨테이너의 로그 구성에 대해 설명합니다. 자세한 정보는 태스크 정의 작성 단원을 참조하십시오.

아래에 표시된 태스크 정의 JSON은 logConfiguration 각 컨테이너에 대해 지정된 개체입니다. WordPress 컨테이너를 사용하여 로그 그룹을 호출합니다. awslogs-wordpress, 및 에 대한 , , 및 을 위한 , 을(를) 위한 MySQL 컨테이너를 사용하여 로그 그룹을 호출합니다. awslogs-mysql. 두 컨테이너 모두 awslogs-example 로그 스트림 접두사.

{ "containerDefinitions": [ { "name": "wordpress", "links": [ "mysql" ], "image": "wordpress", "essential": true, "portMappings": [ { "containerPort": 80, "hostPort": 80 } ], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "awslogs-wordpress", "awslogs-region": "us-west-2", "awslogs-stream-prefix": "awslogs-example" } }, "memory": 500, "cpu": 10 }, { "environment": [ { "name": "MYSQL_ROOT_PASSWORD", "value": "password" } ], "name": "mysql", "image": "mysql", "cpu": 10, "memory": 500, "essential": true, "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "awslogs-mysql", "awslogs-region": "us-west-2", "awslogs-stream-prefix": "awslogs-example" } } } ], "family": "awslogs-example" }

Amazon ECS 콘솔에서 wordpress 컨테이너에 대한 로그 구성은 아래 표시된 이미지와 같이 지정됩니다.


                    콘솔 로그 구성

컨테이너 정의 로그 구성에서 awslogs 로그 드라이버로 작업 정의를 등록한 후 해당 작업 정의를 사용하여 CloudWatch Logs로 로그 전송을 시작할 수 있습니다. 자세한 내용은 작업 실행서비스 생성 단원을 참조하십시오.

awslogs 컨테이너 로그 보기 CloudWatch Logs

EC2 시작 유형을 사용하는 작업의 경우, CloudWatch Logs로 로그를 전송할 적절한 권한이 컨테이너 인스턴스 역할에 포함되고, 컨테이너 에이전트가 버전 1.9.0 이상으로 업데이트되며, awslogs 로그 드라이버를 사용하는 컨테이너를 사용하여 작업을 구성 및 시작했다면 구성된 컨테이너가 CloudWatch Logs로 로그 데이터를 전송할 것입니다. 콘솔에서 이러한 로그를 보고 검색할 수 있습니다.

Amazon ECS 콘솔에서 컨테이너의 CloudWatch Logs 데이터를 보려면

  1. https://console.aws.amazon.com/ecs/에서 Amazon ECS 콘솔을 엽니다.

  2. Clusters 페이지에서 보려는 작업이 포함된 클러스터를 선택합니다.

  3. 에서 클러스터: cluster_name 페이지, 선택 작업 을 클릭하고 볼 작업을 선택합니다.

  4. 에서 작업: task_id 페이지에서 컨테이너 이름 왼쪽에 있는 화살표를 선택하여 컨테이너 보기를 확장합니다.

  5. Log Configuration 섹션에서 View logs in CloudWatch를 선택합니다. 그러면 CloudWatch 콘솔에서 연결된 로그 스트림이 열립니다.

    
                            로그 구성의 작업 정의 보기

CloudWatch 콘솔에서 CloudWatch Logs 데이터를 보려면

  1. https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 Logs를 선택합니다.

  3. 보려는 로그 그룹을 선택합니다. 로그 그룹 생성에서 생성한 로그 그룹이 보일 것입니다.

    
                            awslogs 콘솔 지표 보기
  4. 보려는 로그 스트림을 선택합니다.

    
                            awslogs 콘솔 지표 보기