AWS CloudFormation에서 AWS Fargate 로그 구성해 보기
안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 AWS CloudFormation에서 AWS Fargate의 로그를 구성해 보는 방법을 정리해 봤습니다.
무엇이 문제?
AWS CloudFormation으로 AWS Fargate를 구축했더니 AWS에서 로그를 확인할 수 없었습니다.
실제로 컨테이너 세부 정보에서 로그 구성을 살펴보았더니 아무것도 설정되어 있지 않았던 것을 확인했습니다.
또한 실행 중인 작업의 로그를 확인하고 싶었지만, 표시할 로그가 없다는 메시지가 출력되고 있습니다.
로그 설정
AWS CloudFormation에서 AWS Fargate의 로그를 CloudWatch 로그 그룹으로 보내도록 코드를 추가합니다.
CloudWatchLogsGroup:
Type: 'AWS::Logs::LogGroup'
Properties:
LogGroupName: '/ecs/my-fargate-task'
RetentionInDays: 7
일주일 동안 로그를 보존하도록 CloudWatch 로그 그룹을 생성합니다.
LogConfiguration:
LogDriver: 'awslogs'
Options:
awslogs-group: !Ref CloudWatchLogsGroup
awslogs-region: !Ref 'AWS::Region'
awslogs-stream-prefix: 'ecs'
이어서 작업을 생성하는 코드에 LogConfiguration을 추가합니다. LogDriver는 컨테이너에서 사용할 로그 드라이버로 AWS Fargate에서 지원하는 로그 드라이버는 awslogs, splunk, awsfirelens입니다. 이번 블로그에서는 타 회사의 소프트웨어를 사용하지 않고, CloudWatch 로그 그룹에 로그를 저장하기 하는 것 뿐이므로 로그 드라이버는 awslogs를 사용합니다.
Options에는 로그 드라이버로 보낼 구성 옵션을 정의합니다.
보다 상세한 LogConfiguration에 대한 내용은 아래 공식 문서를 참고해 주세요.
작업 정의(AWS::ECS::TaskDefinition)에 대한 CloudFormation 코드는 아래 공식 문서를 참고해 주세요.
결과 확인
컨테이너 세부 정보에서 로그 구성이 추가된 것을 확인할 수 있습니다.
실행 중인 작업의 로그에 대한 정보도 확인할 수 있습니다.
Amazon CloudWatch 콘솔 화면으로 들어와 로그 그룹을 확인해 보면, 정상적으로 AWS Fargate의 로그가 저장된 것을 확인할 수 있습니다.
본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 jaewookkim533@yahoo.com로 보내주시면 감사하겠습니다.