내용으로 건너뛰기

CloudWatch를 사용하여 Amazon ECS 컨테이너 로그를 모니터링하려면 어떻게 해야 합니까?

4분 분량
0

Amazon CloudWatch를 사용하여 Amazon Elastic Container Service(Amazon ECS) 컨테이너 로그를 모니터링하려고 합니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

로그 드라이버 구성

Amazon ECS 콘솔 또는 JSON 편집기를 사용하여 로그 드라이버를 구성할 수 있습니다.

Amazon ECS 콘솔 사용

다음 단계를 완료합니다.

  1. Amazon ECS 콘솔을 엽니다.
  2. 탐색 창에서 Task Definitions(작업 정의)를 선택한 다음, Create new task definition(새 작업 정의 생성)을 선택합니다.
    참고: 기존 작업 정의를 업데이트하려면 작업 정의를 선택한 다음 Create new revision(새 개정 생성)을 선택합니다.
  3. Create new task definition(새 작업 정의 생성) 페이지의 Task definition configuration(태스크 정의 구성) 섹션에서 작업 정의 패밀리 이름을 입력합니다.
  4. Infrastructure requirements(인프라 요구 사항) 섹션에서 시작 유형을 선택합니다.
  5. Container(컨테이너) 섹션의 Logging(로깅)에서 Use log collection(로그 수집 사용)을 선택합니다.
  6. 다음 키의 경우 기본값을 유지합니다. 필드가 비어 있는 경우 값을 입력합니다.
    awslogs-group
    awslogs-region
    awslogs-stream-prefix
    참고: 로그 그룹이 존재하지 않는 경우 awslogs-create-group 파라미터를 True로 설정하십시오.
  7. 작업 실행 AWS Identity and Access Management(IAM) 역할 권한CreateLogGroup 작업이 포함되어 있는지 확인하십시오.
  8. Create(생성)를 선택합니다.

JSON 편집기 사용

ECS 작업 정의에서 logConfiguration 파라미터를 정의하려면 콘솔의 JSON 편집기에 ECS 작업 정의 템플릿을 입력합니다.

구성 예시:

"logConfiguration":
   "logDriver": "awslogs",
  "options": {
    "awslogs-group": "/ecs/my-log-group",
    "awslogs-region": "region-code",
    "awslogs-stream-prefix": "ecs"
  }
}

참고: my-log-group을 로그 그룹 이름으로 바꾸십시오.

자세한 내용은 Amazon ECS 작업 정의: 로그를 CloudWatch로 라우팅CloudWatch에 Amazon ECS 로그 전송을 참조하십시오.

로그 옵션에 대한 자세한 내용은 Docker 웹사이트의 Amazon CloudWatch Logs 옵션을 참조하십시오.

컨테이너 로그 모니터링 및 문제 해결

컨테이너 로그 분석

CloudWatch Logs Insights를 사용하여 로그를 쿼리하려면 다음 단계를 완료하십시오.

  1. CloudWatch 콘솔을 엽니다.

  2. 탐색 창에서 Logs(로그)를 선택합니다.

  3. Logs Insights를 선택합니다.

  4. 로그 그룹을 선택합니다.

  5. 쿼리를 입력합니다.

  6. Run query(쿼리 실행)를 선택합니다.

  7. 오류 키워드를 검색하여 애플리케이션 문제를 해결합니다. 애플리케이션 로그에 응답 시간이 포함된 경우 느린 요청을 분석합니다.

    쿼리 예제

    fields @timestamp, @message  
    | filter @message like /error/  
    | sort @timestamp desc  
    
    
    fields @timestamp, @message, response_time  
    | filter response_time > 2000  
    | sort response_time desc

자세한 내용은 CloudWatch Logs Insights로 로그 데이터 분석을 참조하십시오.

경보 생성

다음 단계를 완료합니다.

  1. 로그 이벤트에서 지표 필터를 생성합니다.
  2. CloudWatch 경보를 생성합니다.

오류 문제 해결

OutOfMemory 또는 ConnectionTimeout 오류를 해결하려면 Fargate에서 Amazon ECS 작업의 높은 CPU 사용률 문제를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

대량의 5xx HTTP 상태 코드 문제를 해결하려면 HTTP 500: 내부 서버 오류를 참조하십시오.

AWS 서비스와 통합

구독을 사용하면 CloudWatch Logs에서 로그 이벤트의 실시간 피드에 액세스할 수 있습니다. CloudWatch는 Amazon Kinesis 스트림이나 AWS Lambda와 같은 서비스에 로그 이벤트를 전달하여 이를 처리하고 분석하거나 다른 시스템에 로드합니다.

CloudWatch Logs 비용 제어

보존 정책 수정

개발 환경에서는 더 짧은 보존 기간을 사용하고, 프로덕션 환경에서는 로그를 더 길게 유지하는 것이 가장 좋습니다.

보존 기간을 1일에서 10년까지로 선택하거나 무기한으로 로그를 유지할 수 있습니다. 불필요한 비용을 피하려면 보존 설정을 검토하여 필요 이상으로 로그를 유지하지 않는지 확인하십시오.

보존 정책을 설정하려면 다음 단계를 완료하십시오.

  1. CloudWatch 콘솔을 엽니다.
  2. 탐색 창에서 Logs(로그)를 선택합니다.
  3. 그런 다음, Log groups(로그 그룹)를 선택합니다.
  4. 로그 그룹을 선택합니다.
  5. Actions(작업)를 선택한 다음 Edit retention setting(보존 설정 편집)을 선택합니다.
  6. 보존 기간을 선택합니다. 예를 들어 1주, 1개월 또는 사용자 지정 값을 선택합니다.
  7. Save(저장)를 선택합니다.

또는 다음 put-retention-policy AWS CLI 명령을 실행합니다.

aws logs put-retention-policy --log-group-name "/ecs/production-web-app" --retention-in-days retention-period>

참고: log-group-name을 로그 그룹 이름으로 바꾸고 retention-period를 보존 기간으로 바꾸십시오.

**로그 지표 분석 **

비용을 줄이고 최적화하려면 AWS Cost Explorer를 사용하여 각 로그 그룹과 연결된 비용을 분석하십시오.

로그 내보내기 및 보관

저렴한 비용으로 장기 보관하려면 로그를 Amazon Simple Storage Service(Amazon S3) 또는 아카이브 솔루션으로 이동하십시오. Amazon S3로 로그를 내보내려면 CloudWatch 콘솔을 사용하거나 create-export-task 명령을 실행합니다.

aws logs create-export-task --log-group-name "/ecs/production-web-app" \--from start-timestamp --to end-timestamp --destination "s3-log-archive"

참고: log-group-name을 로그 그룹 이름으로, start-timestamp를 시작 시간으로, end-timestamp를 종료 시간으로 바꿉니다.

Amazon S3 수명 주기 정책 구현

S3 수명 주기 구성을 사용하면 이전 로그를 Amazon S3 Glacier로 자동으로 전환하여 지정된 시간 이후에 보관하거나 삭제할 수 있습니다.

과도한 로깅 방지

관련 로그만 전송하도록 애플리케이션을 구성하십시오. 자세한 내용은 로깅 모범 사례를 참조하십시오.

관련 정보

Amazon Elastic Container Service의 로깅 및 모니터링

AWS 공식업데이트됨 일 년 전
댓글 없음

관련 콘텐츠