환경 문제를 해결하기 위해 Amazon Elastic Container Service(Amazon ECS)에서 로그를 수집하려고 합니다.
간략한 설명
Amazon ECS 로그 수집기 스크립트를 사용하여 일반 운영 체제(OS), Docker 및 Amazon ECS 컨테이너 에이전트 로그를 수집합니다. 스크립트는 문제 해결 시 공유할 수 있는 단일 파일 형태로 로그를 압축하여 보관합니다.
또한 AWSSupport-CollectECSInstanceLogs라는 AWS Systems Manager 런북을 사용하여 ECS 인스턴스에서 로그를 수집하고 Amazon Simple Storage Service(Amazon S3) 버킷에 로그를 업로드할 수 있습니다. LogDestination 입력 파라미터에 Amazon S3 버킷의 위치를 제공합니다.
참고: AWSSupport-CollectECSInstanceLogs는 디버그 모드를 지원하지 않습니다. 자세한 내용은 Systems Manager Automation으로 구동되는 자동 작업 실행을 참조하십시오.
해결 방법
Amazon ECS 로그 수집기 다운로드 및 실행
컨테이너 인스턴스에 연결하는 방법에 대한 설명은 SSH를 사용하여 컨테이너 인스턴스에 연결을 참조하십시오. Linux 및 Windows용 로그 수집기를 다운로드하고 실행하는 방법에 대한 설명은 Amazon ECS 로그 수집기를 사용하여 컨테이너 로그 수집을 참조하십시오.
Linux의 경우 curl을 사용해야 합니다. curl을 설치했는지 확인하려면 다음 명령을 실행합니다.
curl --version
명령 출력은 다음 예와 비슷합니다.
curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3
참고: 명령이 예상한 결과를 반환하지 않으면 curl 패키지를 설치합니다.
스크립트를 실행한 후 스크립트가 만든 collect 폴더에서 수집된 로그를 검토할 수 있습니다. Linux에서 모든 로그의 압축 아카이브는 collect-i-ffffffffffffffffff-YYYYMMDDHHmm.tgz입니다. Windows의 경우에는 collect.tgz 파일입니다.
디버그 모드에서 Amazon ECS 로그 수집기 실행
디버그 모드를 사용하면 표준 로그 세부 정보로는 해결할 수 없는 ECS 환경의 복잡한 문제를 해결할 수 있습니다.
Docker 대몬 및 Amazon ECS 컨테이너 에이전트에 대한 디버그 로깅을 활성화하려면 Linux의 경우 --mode=enable-debug를 사용하고 Windows의 경우 -RunMode debug를 사용하십시오.
참고: 이 스크립트는 Docker 대몬과 Amazon ECS 에이전트를 다시 시작한 다음 인스턴스에서 실행 중인 모든 컨테이너를 종료합니다. 다음 명령을 실행하기 전에 컨테이너 인스턴스를 비우고 중요한 작업을 다른 컨테이너 인스턴스로 이동하십시오.
Linux
디버그 모드는 Amazon Linux OS 및 Systemd init 기반 시스템에서만 작동합니다.
스크립트를 실행할 때는 다음 명령을 실행합니다.
[ec2-user ~]$ sudo bash ./ecs-logs-collector.sh --mode=enable-debug
Windows
스크립트를 실행할 때는 관리자 권한으로 Windows PowerShell을 사용하여 다음 명령을 실행합니다.
.\ecs-logs-collector.ps1 -RunMode debug