EKS 기반 AWS Fargate는 Kubernetes 워크로드를 실행할 수 있는 완전관리형 환경을 제공합니다. Amazon Data Firehose를 EKS의 Fluent Bit 로그 라우터와 함께 사용하여 Datadog에서 로그를 수집할 수 있습니다. 이 가이드에서는 Amazon Data Firehose를 통해 전달되는 로그 및 CloudWatch 로그를 비교하고 Amazon Data Firehose를 통해 Datadog에 로그를 전송하는 샘플 EKS Fargate 애플리케이션을 살펴봅니다.
Amazon Data Firehose 및 CloudWatch 로그 포워딩
다음은 Amazon Data Firehose 사용과 CloudWatch 로그 포워딩 사용 간의 주요 차이점입니다.
메타데이터 및 태깅: Amazon Data Firehose를 사용해 로그를 전송할 때 Kubernetes 네임스페이스 및 컨테이너 ID 등의 메타데이터는 구조화된 속성으로 액세스 가능합니다.
AWS 비용: AWS 비용은 개별 사용 사례에 따라 다를 수 있지만 Amazon Data Firehose 수집은 일반적으로 유사한 Cloudwatch 로그 수집보다 저렴합니다.
Fargate 프로필 및 Fargate 포드 실행 역할이 있는 EKS 클러스터입니다. 이 가이드에서는 fargate-namespace네임스페이스에 적용된 fargate-profile Fargate 프로필을 사용하여 클러스터 이름 fargate-cluster을 지정합니다. 이러한 리소스가 아직 없는 경우 Amazon EKS 시작하기를 사용하여 클러스터를 생성하고 Amazon EKS를 사용하여 AWS Fargate 시작하기를 사용하여 Fargate 프로필 및 포드 실행 역할을 생성합니다.
설정
다음 단계에서는 Fluent Bit 및 Amazon Data Firehose 전송 스트림을 통해 EKS 클러스터에 배포된 샘플 애플리케이션의 로그를 Datadog으로 전송하는 프로세스를 간략하게 설명합니다. Datadog의 표준 Kubernetes 태그와의 일관성을 최대화하기 위해 선택한 속성을 태그 키에 다시 매핑하라는 지침이 포함되어 있습니다.
Fluent Bit에 대해 다음 Kubernetes ConfigMap을 aws-logging-configmap.yaml로 생성합니다. 전송 스트림의 이름을 대체합니다.
보다 성능이 뛰어난 신규 Kinesis Firehose 플러그인의 경우 플러그인 이름을 amazon_data_firehose 대신 kinesis_firehose로 사용합니다.
apiVersion:v1kind:ConfigMapmetadata:name:aws-loggingnamespace:aws-observabilitydata:filters.conf:| [FILTER]
Name kubernetes
Match kube.*
Merge_Log On
Buffer_Size 0
Kube_Meta_Cache_TTL 300sflb_log_cw:'true'output.conf:| [OUTPUT]
Name kinesis_firehose
Match kube.*
region <REGION>
delivery_stream <YOUR-DELIVERY-STREAM-NAME>
kubectl를 사용해 ConfigMap 매니페스트를 적용합니다.
kubectl apply -f aws-logging-configmap.yaml
IAM 정책을 생성하고 이를 포드 실행 역할에 연결하여 AWS Fargate에서 실행되는 로그 라우터가 Amazon Data Firehose를 작성할 수 있도록 합니다. 아래 예를 사용하여 Resource 필드의 ARN을 전송 스트림의 ARN으로 바꾸고 지역 및 계정 ID를 지정할 수 있습니다.