Amazon Elastic Container Service(Amazon ECS) Exec이 활성화된 AWS Fargate 작업에 대한 AWS Systems Manager Agent(SSM Agent) 로그를 받고 싶습니다.
간략한 설명
전제 조건:
ECS Exec을 사용하기 위한 요구 사항 완료
ECS Exec이 활성화된 Fargate 작업에 대한 SSM 에이전트 로그를 가져오려면 Amazon Elastic File System(Amazon EFS) 파일 시스템을 만드세요. 그런 다음, Amazon EFS 파일 시스템을 Fargate 컨테이너에 마운트합니다. 마지막으로, 동일한 파일 시스템을 Amazon Elastic Compute Cloud(Amazon EC2)) 인스턴스에 마운트하여 SSM 에이전트 로그를 가져옵니다.
중요: EFS 파일 시스템을 마운트하기 전에 Amazon EC2 인스턴스를 시작해야 합니다. Amazon EFS 파일 시스템, Amazon ECS 클러스터 및 Fargate 작업은 모두 동일한 Amazon Virtual Private Cloud(Amazon VPC)에 있어야 합니다.
해결 방법
참고: 다음 해결 방법은 ECS Exec이 활성화된 Fargate 작업에 대해서만 적용됩니다. 이 해결 단계는 디버깅에만 사용하세요. 로그를 재정의하지 않도록 하려면 작업을 독립 실행형 작업으로 실행하세요. 또는 Amazon ECS 서비스에서 desiredCount 작업 수를 “1”로 유지하세요. 컨테이너에서 stderr/stdout 로그가 아닌 로그를 확인해야 하는 시나리오의 경우 다음 해결 방법을 사용할 수도 있습니다.
Amazon EFS 파일 시스템을 생성하고 Fargate 컨테이너에 마운트
Amazon EFS 파일 시스템을 생성하여 작업 또는 서비스의 Fargate 컨테이너에 마운트하려면 다음 단계를 완료하세요.
- Amazon EFS 파일 시스템 생성
- Amazon EFS ID 및 보안 그룹 ID에 유의하세요.
- 파일 시스템 보안 그룹 규칙을 편집하여 Fargate 작업과 연결된 보안 그룹에서 포트 2049의 인바운드 연결을 허용합니다.
- 파일 시스템의 보안 그룹에 대한 포트 2049의 아웃바운드 연결을 허용하도록 Amazon ECS 보안 그룹을 업데이트합니다.
- Amazon ECS 콘솔을 엽니다.
- 탐색 창에서 작업 정의를 선택한 다음 작업 정의를 선택합니다.
- 새 수정본 만들기를 선택합니다.
- 저장소에서 볼륨에 대해 볼륨 추가를 선택합니다. 다음 정보를 입력합니다
볼륨 이름에 볼륨의 이름을 입력합니다.
볼륨 유형에 EFS를 입력합니다.
파일 시스템 ID에 파일 시스템의 ID를 입력합니다.
- 컨테이너 마운트 지점에 마운트 지점 추가를 선택합니다. 다음 정보를 입력합니다.
컨테이너에 대해 컨테이너를 선택합니다.
소스 볼륨에 대해 소스 볼륨을 선택합니다.
컨테이너 경로에 /var/log/amazon을 입력합니다.
- 생성을 선택합니다.
참고: Amazon EFS 파일 시스템을 Amazon EC2 인스턴스에 마운트하기 전에 작업이 running 상태여야 합니다.
Amazon EC2 인스턴스에 Amazon EFS 파일 시스템을 마운트하고 SSM 에이전트 로그를 가져옵니다.
참고: AWS Command Line Interface(AWS CLI) 명령 실행 시 오류가 발생하는 경우, AWS CLI 오류 문제 해결을 참고하세요. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하세요.
다음 단계를 완료합니다.
-
EC2 인스턴스에 파일 시스템을 마운트합니다.
-
로그 데이터를 가져오려면 다음 AWS CLI 명령을 실행합니다.
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-01b0bxxxxxxxx.efs.ap-southeast-1.amazonaws.com:/ /efs
출력 예시:
# df -h
Filesystem Size Used Avail Use% Mounted on
fs-01b0bxxxxxxxx.efs.us-west-2.amazonaws.com:/ 8.0E 0 8.0E 0% /efs
다음은 Fargate 컨테이너의 /var/log/amazon/ssm/amazon-ssm-agent.log 경로에 저장된 로그의 예입니다.
[root@ip-172-31-32-32 efs]# cd ssm/
[root@ip-172-31-32-32 ssm]# ls
amazon-ssm-agent.log audits
[root@ip-172-31-32-32 ssm]# cat amazon-ssm-agent.log | tail -n 10
2022-10-20 11:50:34 INFO [ssm-agent-worker] [MessageService] [MessageHandler] ended idempotency deletion thread
2022-10-20 11:50:37 INFO [ssm-agent-worker] [MessageService] [MGSInteractor] send failed reply thread started
2022-10-20 11:50:37 INFO [ssm-agent-worker] [MessageService] [MGSInteractor] send failed reply thread done
2022-10-20 11:55:37 INFO [ssm-agent-worker] [MessageService] [MGSInteractor] send failed reply thread started
2022-10-20 11:55:37 INFO [ssm-agent-worker] [MessageService] [MGSInteractor] send failed reply thread done
2022-10-20 12:00:34 INFO [ssm-agent-worker] [MessageService] [MessageHandler] started idempotency deletion thread
2022-10-20 12:00:34 WARN [ssm-agent-worker] [MessageService] [MessageHandler] [Idempotency] encountered error open /var/lib/amazon/ssm/170b15cacf5846ed836bcd7903cbee48-2531612879/idempotency: no such file or directory while listing replies in /var/lib/amazon/ssm/170b15cacf5846ed836bcd7903cbee48-2531612879/idempotency
2022-10-20 12:00:34 INFO [ssm-agent-worker] [MessageService] [MessageHandler] ended idempotency deletion thread
2022-10-20 12:00:37 INFO [ssm-agent-worker] [MessageService] [MGSInteractor] send failed reply thread started
2022-10-20 12:00:37 INFO [ssm-agent-worker] [MessageService] [MGSInteractor] send failed reply thread done
[root@ip-172-31-32-32 ssm]#