Amazon ECS 또는 Amazon EKS의 컨테이너 로그 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 7월 15일

내 Amazon Elastic Container Service(Amazon ECS) 작업 또는 Amazon Elastic Kubernetes Service(Amazon EKS) 포드의 컨테이너 로그를 찾을 수 없습니다. 이러한 로그를 어디에서 찾을 수 있습니까?

간략한 설명

다음과 같은 경우 컨테이너식 애플리케이션이 로그의 일부 또는 전부를 작성하지 못할 수 있습니다.

  • Amazon ECS의 컨테이너 인스턴스에서 "docker logs yourContainerName" 명령을 실행합니다.
  • Amazon ECS에서 작업에 대해 awslogs 로그 드라이버를 사용합니다.
  • Amazon EKS 클러스터에 대해 "kubectl logs yourPodName" 명령을 실행합니다.

다음과 같은 경우 문제가 발생할 수 있습니다.

  • 호스트 인스턴스에 문제가 있습니다.
  • 컨테이너식 애플리케이션이 올바른 위치에 기록되지 않아 로그가 Docker 데몬에 표시되지 않습니다.

​​​해결 방법

Amazon ECS 작업에 대한 로그 찾기

작업이 올바르게 구성되었는지 확인하여 로그를 찾을 수 있도록 하려면 다음 사항을 고려하십시오.

  • ECS 작업 정의의 컨테이너 정의 섹션에서 logConfiguration 파라미터로 로그 드라이버를 설정합니다. 로그 드라이버는 컨테이너별로 설정됩니다. ECS 작업에 컨테이너 정의가 여러 개 있는 경우 로그가 있는 컨테이너에 대해 로그 구성이 올바른지 확인합니다.
  • Amazon ECS 컨테이너 에이전트가 여유 공간을 확보하기 위해 로그 파일을 자동으로 제거합니다. 컨테이너 인스턴스에서 로그 파일을 더 오래 보존하기 위해 작업 정리 빈도를 줄일 수 있습니다.

작업에서 awslogs 로그 드라이버를 사용하는 경우 다음 조건에 해당됩니다.

  • 로그는 Amazon CloudWatch Logs에 스트리밍됩니다. 이러한 로그는 컨테이너 인스턴스에 기록되지 않습니다.
  • "docker logs yourContainerName" 명령이 "Error response from daemon: configured logging driver does not support reading"이라는 오류 메시지를 반환합니다.

EC2 시작 유형이 CloudWatch Logs로 스트리밍되도록 허용하려면 컨테이너 인스턴스가 사용하는 IAM 역할에 권한을 부여합니다.

Fargate 시작 유형이 CloudWatch Logs로 스트리밍되도록 허용하려면 작업이 사용하는 IAM 역할에 권한을 부여합니다.

로그가 계속 누락되는 경우 컨테이너 문제 해결 섹션의 단계를 완료하십시오.

Amazon EKS에서 Kubernetes 포드에 대한 로그 찾기

포드의 컨테이너에서 생성된 로그 파일을 반환하려면 다음 kubectl 명령을 실행합니다.

kubectl logs yourPodName

참고: kubelet은 가비지 수집의 일환으로 포드가 종료된 후 자동으로 로그 파일을 제거합니다. 작업자 노드에서 이러한 로그 파일을 더 오래 보존하려면 kubelet이 가비지 수집 실행 빈도를 줄이도록 구성합니다.

로그가 계속 누락되는 경우 컨테이너 문제 해결 섹션의 단계를 완료하십시오.

컨테이너 문제 해결

애플리케이션에 대해 다음 옵션을 고려하십시오.

  • 컨테이너 빌드 중 애플리케이션을 올바른 로그 수준으로 설정합니다.
    참고: 애플리케이션에 따라 환경 변수를 통하거나 구성 파일에서 로깅을 설정해야 할 수 있습니다.
  • 애플리케이션을 컨테이너의 ENTRYPOINT로 지정합니다.
    참고: dockerfile의 ENTRYPOINTSTDOUT 및 STDERR I/O 스트림이 로깅되는 프로세스입니다.
  • STDOUTSTDERR에 연결된 애플리케이션 로그 파일로 컨테이너를 빌드하거나 애플리케이션이 직접 /proc/1/fd/1(stdout) 및 /proc/1/fd/2(stderr)에 로깅되도록 구성합니다. 예를 들어, 공식 nginxhttpd 컨테이너 이미지를 참조하십시오.
    참고: 가능한 경우 애플리케이션 프로세스를 컨테이너에서 상위 프로세스가 되도록 지정하십시오. 컨테이너가 ENTRYPOINT로 셸 스크립트를 사용하는 경우 런타임 시 컨테이너 데이터가 초기화하도록 스크립트를 구성합니다.

이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?