AWS re:Post을(를) 사용하면 다음에 동의하게 됩니다. AWS re:Post 이용 약관

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

3분 분량
0

Amazon Elastic Container Service(Amazon ECS) 작업 또는 Amazon Elastic Kubernetes Service(Amazon EKS) 포드의 컨테이너 로그를 찾을 수 없습니다.

간략한 설명


Amazon ECS 또는 Amazon EKS에 대한 컨테이너 로그가 없는 경우 호스트 인스턴스에 문제가 있을 수 있습니다. 또는 컨테이너화된 애플리케이션이 올바른 위치에 쓰지 않으면 로그가 Docker 데몬에 표시되지 않을 수 있습니다.

다음은 컨테이너화된 애플리케이션이 로그의 일부 또는 전체를 쓰지 않는 일반적인 시나리오입니다.

  • Amazon ECS의 컨테이너 인스턴스에서 docker logs yourContainerName 명령을 실행합니다.
  • Amazon ECS의 작업에 awslogs log driver를 사용합니다.
  • 아마존 EKS 클러스터에 대해 kubectl logs yourPodName 명령을 실행합니다.

해결 방법

Amazon ECS 작업에 대한 로그 문제 해결

작업이 올바르게 구성되었는지 확인

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

CloudWatch Logs 검토

작업에서 awslogs 로그 드라이버를 사용하는 경우 로그가 Amazon CloudWatch Logs로 스트리밍됩니다. 이러한 로그는 컨테이너 인스턴스에 기록되지 않습니다. docker logs yourContainerName 명령이 다음 오류 메시지를 반환합니다. "데몬의 오류 응답: 구성된 로깅 드라이버가 읽기를 지원하지 않습니다."

올바른 권한 부여

Amazon Elastic Compute Cloud(Amazon EC2) 시작 유형이 CloudWatch Logs로 스트리밍할 수 있도록 하려면 컨테이너 인스턴스의 IAM 역할에 권한을 부여합니다.

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

로그가 여전히 없는 경우 애플리케이션 컨테이너 문제 해결 섹션의 단계를 완료하십시오.

Amazon EKS의 Kubernetes 포드에 대한 로그 문제 해결

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

kubectl logs yourPodName

참고: kubelet은 포드가 종료된 후 로그 파일을 자동으로 제거합니다. 자세한 내용은 Kubernetes 웹 사이트에서 사용되지 않는 컨테이너 및 이미지의 가비지 수집을 참조하십시오. 작업자 노드에 이러한 로그 파일을 더 오래 보존하려면 가비지 콜렉션을 덜 자주 실행하도록 kubelet을 구성합니다.

로그가 여전히 없는 경우 애플리케이션 컨테이너 문제 해결 섹션의 단계를 완료하십시오.

애플리케이션 컨테이너 문제 해결

애플리케이션 컨테이너의 문제를 해결하려면 다음 작업을 완료합니다.

  • 컨테이너 빌드 중에 애플리케이션을 올바른 로그 수준으로 설정합니다.
    참고: 애플리케이션에 따라 환경 변수 또는 구성 파일을 통해 로깅을 설정해야 할 수 있습니다.
  • 애플리케이션을 컨테이너의 ENTRYPOINT로 만듭니다. 자세한 내용은 Docker Docs 웹사이트에서 ENTRYPOINT를 참조하십시오.
    참고: dockerfile의 ENTRYPOINTSTDOUTSTDERR I/O 스트림이 로깅되는 프로세스입니다. 자세한 내용은 Docker Docs 웹사이트에서 컨테이너 로그 보기를 참조하십시오.
  • STDOUTSTDERR에 연결된 애플리케이션 로그 파일을 사용하여 컨테이너를 빌드합니다. 또는 /proc/1/fd/1(stdout) 및 /proc/1/fd/2(stderr)에 직접 로깅하도록 애플리케이션을 구성합니다. 예시는 Docker Hub 웹 사이트에서 nginxhttpd 공식 컨테이너 이미지를 참조하십시오.
    참고: 사용 사례에서 허용하는 경우 애플리케이션 프로세스를 컨테이너의 상위 프로세스로 만드십시오. 컨테이너가 셸 스크립트를 ENTRYPOINT로 사용하는 경우 런타임에 컨테이너 데이터를 초기화하도록 스크립트를 구성하십시오.
AWS 공식
AWS 공식업데이트됨 6달 전
댓글 없음

관련 콘텐츠