사용자 지정 로그 라우팅 - Amazon Elastic Container Service

사용자 지정 로그 라우팅

Amazon ECS용 FireLens를 사용하면 태스크 정의 파라미터를 사용하여 로그를 AWS 서비스 또는 AWS 파트너 네트워크(APN) 대상으로 라우팅하여 로그를 저장 및 분석할 수 있습니다. FireLens는 FluentdFluent Bit와 함께 작동합니다. AWS는 Fluent Bit 이미지에 AWS를 제공합니다. 또는 자체 Fluentd 또는 Fluent Bit 이미지를 사용할 수 있습니다.

FireLens 구성을 사용한 Amazon ECS 태스크 정의 생성은 AWS SDK, AWS CLI 및 AWS Management Console을 통해 지원됩니다.

Considerations

Amazon ECS용 FireLens를 사용할 때는 다음 사항을 고려해야 합니다.

  • Amazon ECS용 FireLens는 AWS Fargate 및 Amazon EC2 모두에서 호스팅되는 태스크에 대해 지원됩니다.

  • Amazon ECS용 FireLens는 AWS CloudFormation 템플릿에서 지원됩니다. 자세한 내용은 AWS CloudFormation 사용 설명서AWS::ECS::TaskDefinition FirelensConfiguration을 참조하세요.

  • FireLens의 수신 포트는 24224이므로 FireLens 로그 라우터가 태스크 범위를 벗어나지 않도록 태스크에서 사용하는 보안 그룹의 포트 24224에서 수신 트래픽을 허용해서는 안 됩니다. awsvpc 네트워크 모드를 사용하는 태스크의 경우 이것은 태스크와 연결된 보안 그룹입니다. host 네트워크 모드를 사용하는 태스크의 경우 이것은 태스크를 호스팅하는 Amazon EC2 인스턴스와 연결된 보안 그룹입니다. bridge 네트워크 모드를 사용하는 태스크의 경우 포트 24224를 사용하는 포트 매핑을 생성하지 마세요.

  • bridge 네트워크 모드를 사용하는 작업의 경우 FireLens 구성이 포함된 컨테이너는 해당 컨테이너를 사용하는 모든 애플리케이션 컨테이너가 시작되기 전에 시작해야 합니다. 컨테이너의 시작 순서를 제어하려면 태스크 정의에서 종속성 조건을 사용하세요. 자세한 내용은 컨테이너 종속성 섹션을 참조하세요

    참고

    FireLens 구성과 함께 컨테이너 정의에서 종속성 조건 파라미터를 사용하는 경우 각 컨테이너에 START 또는 HEALTHY 조건 요구 사항이 있는지 확인하세요.

  • Amazon ECS 최적화 Bottlerocket AMI는 FireLens를 지원하지 않습니다.

필수 IAM 권한

이 기능을 사용하려면 태스크에 필요한 AWS 서비스 사용에 필수적인 권한을 제공하는 태스크에 IAM 역할을 생성해야 합니다. 예를 들어 컨테이너가 로그를 Kinesis Data Firehose로 라우팅하는 경우 태스크에 firehose:PutRecordBatch API를 호출 할 수 있는 권한이 필요합니다. 자세한 내용은 IAM 사용 설명서IAM 자격 증명 권한 추가 및 제거 섹션을 참조하세요.

다음 IAM 정책 예시에서는 로그를 Kinesis Data Firehose로 라우팅하는 데 필요한 권한을 추가합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "firehose:PutRecordBatch" ], "Resource": [ "*" ] } ] }

다음 조건에서는 태스크 수행 시 Amazon ECS 태스크 실행 역할이 필요할 수도 있습니다. 자세한 내용은 Amazon ECS 태스크 실행 IAM 역할 섹션을 참조하세요

  • 태스크가 Fargate에 호스팅되고 Amazon ECR에서 컨테이너 이미지를 가져오거나 로그 구성의 AWS Secrets Manager에서 민감한 데이터를 참조하는 경우, 태스크 실행 IAM 역할을 포함하고 있어야 합니다.

  • Amazon S3에서 호스팅되는 사용자 지정 구성 파일을 지정하는 경우 태스크 실행 IAM 역할에 구성 파일에 대한 s3:GetObject 권한과 파일이 있는 Amazon S3 버킷에 대한 s3:GetBucketLocation 권한이 포함되어야 합니다. 자세한 내용은 Amazon Simple Storage Service Console 사용 설명서정책에서 권한 지정을 참조하세요.

    다음 IAM 정책 예시에서는 Amazon S3에서 파일을 검색하는 데 필요한 권한을 추가합니다. Amazon S3 버킷의 이름과 구성 파일 이름을 지정합니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::examplebucket/folder_name/config_file_name" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::examplebucket" ] } ] }

TCP를 통해 Fluent logger 또는 Log4j 사용

awsfirelens 로그 드라이버가 태스크 정의에 지정되어 있으면 Amazon ECS 컨테이너 에이전트는 다음 환경 변수를 컨테이너에 주입합니다.

FLUENT_HOST

FireLens 컨테이너에 할당된 IP 주소입니다.

FLUENT_PORT

Fluent Forward 프로토콜이 수신 대기 중인 포트입니다.

FLUENT_HOSTFLUENT_PORT 환경 변수를 사용하면 stdout을 거치지 않고 코드에서 로그 라우터로 직접 로깅할 수 있습니다. 자세한 내용은 GitHub에서 fluent-logger-golang을 참조하세요.

주제