Amazon ECS 로그 파일 위치 - Amazon Elastic Container Service

Amazon ECS 로그 파일 위치

Amazon ECS는 컨테이너 인스턴스의 /var/log/ecs 폴더에 로그를 저장합니다. 컨테이너 인스턴스에는 Amazon ECS 컨테이너 에이전트에서 사용할 수 있는 로그와 에이전트 상태(시작/중지)를 제어하는 ecs-init 서비스에서 사용할 수 있는 로그가 있습니다. 이러한 로그 파일은 SSH를 사용하여 컨테이너 인스턴스에 연결하면 볼 수 있습니다. 자세한 내용은 컨테이너 인스턴스에 연결 섹션을 참조하세요.

참고

컨테이너 인스턴스에서 모든 로그를 수집하는 방법을 잘 모르는 경우 Amazon ECS 로그 수집기를 사용하면 됩니다. 자세한 내용은 Amazon ECS 로그 수집기 섹션을 참조하세요.

Amazon ECS 컨테이너 에이전트 로그

Amazon ECS 컨테이너 에이전트는 컨테이너 인스턴스에 로그를 저장합니다.

컨테이너 에이전트 버전 1.36.0 이상에서는 기본적으로 로그가 Linux 인스턴스의 /var/log/ecs/ecs-agent.log와 Windows 인스턴스의 C:\ProgramData\Amazon\ECS\log\ecs-agent.log에 있습니다.

컨테이너 에이전트 버전 1.35.0 및 이전 버전의 경우 기본적으로 로그는 Linux 인스턴스의 /var/log/ecs/ecs-agent.log.timestamp와 Windows 인스턴스의 C:\ProgramData\Amazon\ECS\log\ecs-agent.log.timestamp에 있습니다.

기본적으로 에이전트 로그는 매시간 교체되며 최대 24개의 로그가 저장됩니다.

다음은 기본 에이전트 로깅 동작을 변경하는 데 사용할 수 있는 컨테이너 에이전트 구성 변수입니다. 자세한 내용은 Amazon ECS 컨테이너 에이전트 구성 섹션을 참조하세요.

ECS_LOGFILE

예제 값: /ecs-agent.log

Linux 기본값: Null

Windows 기본값: Null

에이전트 로그를 기록할 위치입니다. Amazon ECS 최적화 AMI를 사용할 때 기본 메서드인 ecs-init를 통해 에이전트를 실행 중인 경우 컨테이너 내 경로는 호스트의 /var/log/ecs/로 외부 지정되는 /logecs-init 탑재가 됩니다.

ECS_LOGLEVEL

예제 값: crit, error, warn, info, debug

Linux 기본값: info

Windows 기본값: info

기록할 세부 정보 수준입니다.

ECS_LOGLEVEL_ON_INSTANCE

예제 값: none, crit, error, warn, info, debug

Linux에서의 기본값: ECS_LOG_DRIVER가 비어 있지 않은 값으로 명시적으로 설정된 경우에는 none이고, 그 외에는 ECS_LOGLEVEL과 동일한 값

Windows에서의 기본값: ECS_LOG_DRIVER가 비어 있지 않은 값으로 명시적으로 설정된 경우에는 none이고, 그 외에는 ECS_LOGLEVEL과 동일한 값

ECS_LOGLEVEL을 재정의하고 로깅 드라이버에 로깅된 수준과 별도로, 인스턴스의 로그 파일에 로깅해야 하는 세부 정보 수준을 설정하는 데 사용할 수 있습니다. 로깅 드라이버가 명시적으로 설정되어 있을 경우, 인스턴스의 로그는 기본적으로 비활성화되지만 이 변수를 사용하여 다시 활성화할 수 있습니다.

ECS_LOG_ROLLOVER_TYPE

예제 값: size, hourly

Linux 기본값: hourly

Windows 기본값: hourly

컨테이너 에이전트 로그 파일을 한 시간마다 교체할지 아니면 크기를 기준으로 교체할지 결정합니다. 기본적으로 에이전트 로그 파일은 한 시간마다 교체됩니다.

ECS_LOG_OUTPUT_FORMAT

예제 값: logfmt, json

Linux 기본값: logfmt

Windows 기본값: logfmt

로그 출력 형식을 결정합니다. json 형식을 사용하면 로그의 각 행이 구조화된 JSON 맵이 됩니다.

ECS_LOG_MAX_FILE_SIZE_MB

예제 값: 10

Linux 기본값: 10

Windows 기본값: 10

ECS_LOG_ROLLOVER_TYPE 변수를 size로 설정하면 이 변수에 따라 교체 전 로그 파일의 최대 크기(MB)가 결정됩니다. 롤오버 유형이 hourly로 설정된 경우 이 변수가 무시됩니다.

ECS_LOG_MAX_ROLL_COUNT

예제 값: 24

Linux 기본값: 24

Windows 기본값: 24

보관할 교체된 로그 파일 수를 결정합니다. 이 제한에 도달한 이후에 이전 로그 파일이 삭제됩니다.

다음은 컨테이너 에이전트 버전 1.36.0 이상에서 logfmt 형식을 사용할 때의 로그 파일 예시입니다.

level=info time=2019-12-12T23:43:29Z msg="Loading configuration" module=agent.go level=info time=2019-12-12T23:43:29Z msg="Image excluded from cleanup: amazon/amazon-ecs-agent:latest" module=parse.go level=info time=2019-12-12T23:43:29Z msg="Image excluded from cleanup: amazon/amazon-ecs-pause:0.1.0" module=parse.go level=info time=2019-12-12T23:43:29Z msg="Amazon ECS agent Version: 1.36.0, Commit: ca640387" module=agent.go level=info time=2019-12-12T23:43:29Z msg="Creating root ecs cgroup: /ecs" module=init_linux.go level=info time=2019-12-12T23:43:29Z msg="Creating cgroup /ecs" module=cgroup_controller_linux.go level=info time=2019-12-12T23:43:29Z msg="Loading state!" module=statemanager.go level=info time=2019-12-12T23:43:29Z msg="Event stream ContainerChange start listening..." module=eventstream.go level=info time=2019-12-12T23:43:29Z msg="Restored cluster 'auto-robc'" module=agent.go level=info time=2019-12-12T23:43:29Z msg="Restored from checkpoint file. I am running as 'arn:aws:ecs:us-west-2:0123456789:container-instance/auto-robc/3330a8a91d15464ea30662d5840164cd' in cluster 'auto-robc'" module=agent.go

다음은 JSON 형식을 사용할 때의 로그 파일 예시입니다.

{"time": "2019-11-07T22:52:02Z", "level": "info", "msg": "Starting Amazon Elastic Container Service Agent", "module": "engine.go"}

컨테이너 에이전트 버전 1.35.0 및 이전 버전의 경우 로그 파일의 형식은 다음과 같습니다.

2016-08-15T15:54:41Z [INFO] Starting Agent: Amazon ECS Agent - v1.12.0 (895f3c1) 2016-08-15T15:54:41Z [INFO] Loading configuration 2016-08-15T15:54:41Z [WARN] Invalid value for task cleanup duration, will be overridden to 3h0m0s, parsed value 0, minimum threshold 1m0s 2016-08-15T15:54:41Z [INFO] Checkpointing is enabled. Attempting to load state 2016-08-15T15:54:41Z [INFO] Loading state! module="statemanager" 2016-08-15T15:54:41Z [INFO] Detected Docker versions [1.17 1.18 1.19 1.20 1.21 1.22] 2016-08-15T15:54:41Z [INFO] Registering Instance with ECS 2016-08-15T15:54:41Z [INFO] Registered! module="api client"

Amazon ECS ecs-init 로그

ecs-init 프로세스는 /var/log/ecs/ecs-init.log에 로그를 저장합니다.

cat /var/log/ecs/ecs-init.log

결과:

2018-02-16T18:13:54Z [INFO] pre-start 2018-02-16T18:13:56Z [INFO] start 2018-02-16T18:13:56Z [INFO] No existing agent container to remove. 2018-02-16T18:13:56Z [INFO] Starting Amazon Elastic Container Service Agent

작업 자격 증명 감사 로그를 위한 IAM 역할

IAM 역할을 위한 자격 증명 공급자를 사용하여 작업에 자격 증명을 제공하는 경우 이 요청은 감사 로그에 저장됩니다. 감사 로그는 컨테이너 에이전트 로그와 동일한 로그 교체 설정을 상속합니다. ECS_LOG_ROLLOVER_TYPE, ECS_LOG_MAX_FILE_SIZE_MBECS_LOG_MAX_ROLL_COUNT 컨테이너 에이전트 구성 변수는 감사 로그의 동작에 영향을 미치도록 설정할 수 있습니다. 자세한 내용은 Amazon ECS 컨테이너 에이전트 로그 섹션을 참조하세요.

컨테이너 에이전트 버전 1.36.0 이상에서는 감사 로그가 /var/log/ecs/audit.log에 있습니다. 로그가 교체되면 YYYY-MM-DD-HH 형식의 타임스탬프가 로그 파일 이름의 끝에 추가됩니다.

컨테이너 에이전트 버전 1.35.0 및 이전 버전의 경우 감사 로그는 /var/log/ecs/audit.log.YYYY-MM-DD-HH에 있습니다.

로그 항목 형식은 다음과 같습니다.

  • 타임스탬프

  • HTTP 응답 코드

  • 요청 오리진의 IP 주소와 포트 번호

  • 자격 증명 공급자의 상대 URI

  • 요청을 한 사용자 에이전트

  • 요청 컨테이너가 속한 작업의 ARN

  • GetCredentials API 이름 및 버전 번호

  • 컨테이너 인스턴스가 등록된 Amazon ECS 클러스터의 이름

  • 컨테이너 인스턴스 ARN

로그 항목 예시는 아래에 나와 있습니다.

cat /var/log/ecs/audit.log.2016-07-13-16

결과:

2016-07-13T16:11:53Z 200 172.17.0.5:52444 "/v1/credentials" "python-requests/2.7.0 CPython/2.7.6 Linux/4.4.14-24.50.amzn1.x86_64" TASK_ARN GetCredentials 1 CLUSTER_NAME CONTAINER_INSTANCE_ARN