Amazon ECS Action Logs로 트러블슈팅하기
Amazon ECS Action Logs로 트러블슈팅하기
Action Logs는 Amazon ECS가 시작한 작업(service-initiated operations)에 대한 상세 기록을 제공해 문제를 진단하는 데 도움을 줘요. 각 로그 엔트리에는 타임스탬프, 로그 레벨, 이벤트 이름, 그리고 무슨 일이 왜 일어났는지에 대한 컨텍스트가 있는 상세 페이로드(detail payload)가 포함됩니다.
출처: 문서
본문
Action Logs는 Amazon ECS가 시작한 작업에 대한 상세 기록을 제공해 문제를 진단하는 데 도움을 줍니다. 각 로그 엔트리에는 타임스탬프, 로그 레벨, 이벤트 이름, 그리고 무슨 일이 왜 일어났는지에 대한 컨텍스트가 있는 상세 페이로드가 포함되어요.
로그 레벨 이해하기
Action Logs는 각 이벤트의 심각도를 나타내는 세 가지 로그 레벨을 사용합니다.
- INFO — 배포 시작, 태스크 실행, 리소스 프로비저닝 같은 정상 작업. 이 이벤트들은 Amazon ECS가 예상대로 작업을 수행하고 있음을 나타냅니다.
- WARN — 주의가 필요할 수 있는 치명적이지 않은 문제. 예를 들어 재시도 시도나 용량 제약이 있습니다. Amazon ECS는 진행하지만 작업이 예상보다 오래 걸릴 수 있습니다.
- ERROR — 조치가 필요한 실패. 예를 들어 배포 실패, 프로비저닝 오류, 태스크 시작 손상(impaired) 있습니다. 이 이벤트들을 검토해 근본 원인을 파악하고 시정 조치를 취하세요.
팁: 문제를 빠르게 식별하려면
ERROR또는WARN로그 레벨로 필터링해서 시작하세요. 그런 다음 추가 컨텍스트를 위해 검색을INFO이벤트로 확장할 수 있습니다.
실패한 서비스 배포 디버깅하기
- 증상: 배포가 진행 중에 멈추거나 자동으로 롤백됩니다.
- 찾아야 할 것:
eventName에DEPLOYMENT가 포함된ERROR로그로 필터링합니다. 배포 ARN, 상태 이유, 실패한 태스크 수를 위해 상세 페이로드를 확인하세요.
다음 예제는 롤백 후보가 없어 발생한 배포 실패를 보여줍니다.
{
"resourceArn": "arn:aws:ecs:us-east-1:111122223333:cluster/my-cluster",
"actionSourceId": "service/my-cluster/my-service",
"logLevel": "ERROR",
"eventTimestamp": 1784573730986,
"detail": {
"statusReason": "No rollback candidate was found to run the rollback.",
"serviceDeploymentArn": "arn:aws:ecs:us-east-1:111122223333:service-deployment/my-cluster/my-service/abc123def456",
"status": "FAILED",
"eventName": "SERVICE_DEPLOYMENT_ROLLBACK_FAILED"
}
}
- 해결책: 태스크가 왜 실패했는지 파악하려면
detail.statusReason필드를 확인합니다. 모든 배포 오류를 찾으려면 다음 CloudWatch Logs Insights 쿼리를 사용하세요.
fields @timestamp, detail.statusReason
| filter logLevel = "ERROR" and detail.deploymentArn like /my-cluster\/my-service/
| sort @timestamp desc
| limit 20
관리형 데몬 문제 진단하기
- 증상: 데몬이 인스턴스에서 시작되지 않거나 데몬 배포가 멈춥니다.
- 찾아야 할 것: 데몬 ARN으로 로그를 필터링해 데몬 관련 이벤트를 찾습니다.
logLevel로 필터링해 경고나 오류만 좁힐 수도 있습니다.
다음 예제는 대상 인스턴스의 메모리 부족으로 시작에 실패한 데몬 태스크를 보여줍니다.
{
"timestamp": 1719500050000,
"logLevel": "WARN",
"account": "123456789012",
"region": "us-east-1",
"resourceArn": "arn:aws:ecs:us-east-1:123456789012:cluster/my-cluster",
"actionSourceId": "arn:aws:ecs:us-east-1:123456789012:daemon/my-cluster/my-logging-daemon",
"eventName": "DAEMON_TASK_START_IMPAIRED",
"detail": {
"statusReason": "RESOURCE:MEMORY - Unable to place daemon task on container instance: insufficient memory",
"containerInstanceArn": "arn:aws:ecs:us-east-1:123456789012:container-instance/my-cluster/a1b2c3d4"
}
}
- 해결책: 대상 인스턴스가 데몬 태스크를 실행할 충분한 리소스를 갖고 있는지 확인합니다. 인스턴스가 draining 중이면 새 인스턴스가 가용해질 때까지 데몬이 시작되지 않을 수 있습니다. 특정 데몬의 이벤트를 필터링하려면 다음 쿼리를 사용하세요.
fields @timestamp, logLevel, detail.statusReason
| filter actionSourceId like /my-logging-daemon/
| filter logLevel in ["ERROR", "WARN"]
| sort @timestamp desc
| limit 20
데몬 태스크 중지 이유 이해하기
- 증상: 데몬 태스크가 예기치 않게 중지됩니다.
- 찾아야 할 것: 데몬 태스크 실패 상세 정보를 포함하는
WARN및ERROR로그로 필터링합니다. 상세 페이로드의 다음 필드가 데몬 태스크가 왜 중지되었는지 정보를 제공합니다.detail.stopCode— 태스크 중지 이유를 분류하는 기계 판독 가능 코드detail.statusReason— 태스크가 왜 중지되었는지 사람이 읽을 수 있는 설명. 모든 로그 엔트리에 존재하지는 않습니다.detail.containerStoppedReason— 태스크를 중지시킨 특정 컨테이너에 대한 추가 컨텍스트
태스크 중지 코드 전체 목록과 설명은 "Amazon ECS stopped tasks error messages"를 참고하세요.
참고:
UserInitiated같은 예상되는 데몬 태스크 중지는 Action Logs에서 걸러집니다. 예기치 않거나 오류 관련 데몬 태스크 중지만 볼 수 있어요.
유용한 CloudWatch Logs Insights 쿼리
다음 CloudWatch Logs Insights 쿼리들을 사용해 Amazon ECS 서비스의 흔한 문제를 조사하세요.
지난 1시간 동안의 모든 오류
fields @timestamp, logLevel, eventName, detail.statusReason
| filter logLevel = "ERROR"
| sort @timestamp desc
| limit 50
참고:
detail.statusReason필드는 모든 로그 엔트리에 존재하지 않습니다. 결과에서 필드가 비어 있다면eventName과 상세 페이로드의 다른 필드를 컨텍스트로 사용하세요.
특정 서비스의 이벤트
fields @timestamp, logLevel, detail.statusReason
| filter @message like /my-service/
| sort @timestamp desc
| limit 50
특정 배포의 타임라인
fields @timestamp, logLevel, detail.statusReason
| filter detail.deploymentArn like /my-cluster\/my-service\/abc123/
| sort @timestamp asc
이유별 데몬 태스크 실패 집계
filter logLevel = "ERROR" and detail.stopCode != ""
| stats count(*) as failureCount by detail.stopCode, detail.statusReason
| sort failureCount desc
| limit 20
더 알아보기 (Learn more)
- Amazon ECS Action Logs와 중지된 태스크 오류에 대한 자세한 내용은 AWS 공식 문서를 참고해 주세요.