FastAPI log (2) -AWS EKS Fargate, 왜 Fluent Bit 인가?

2025. 1. 30. 22:02·탐구 생활/FastAPI Log

이 시리즈는 AWS EKS & FastAPI 환경에서 로그를 적용하는 과정을 다루고 있습니다. 전체 시리즈는 다음과 같습니다.

- FastAPI log (1) - AWS EKS Fargate 환경에서 log 를 외부시스템에 보내기

- FastAPI log (2) -AWS EKS Fargate, 왜 Fluent Bit 인가?

- FastAPI log (3) - 설계, 구현

- FastAPI log (4) - 개선하기


 

이전글 "AWS EKS Fargate 환경에서 log 를 외부시스템에 보내기" 에서 Fargate 내부에 Fluent Bit 에이전트가 기본적으로 설치되어 있으며, AWS가 제공하는 설정 방식에 따라 CloudWatch 등으로 로그를 전송할 수 있음을 설명했다.

그러나 클라우드 환경에서 관측 데이터(telemetry data)를 수집하여 Log Storage로 보낼 수 있는 다양한 옵션이 존재하는데, 왜 AWS는 Fluent Bit을 선택하여 Fargate에 포함시켰을까?


1. 범용 로그 수집기 비교

일반적으로 사용되는 로그 수집기들의 성능을 비교한 자료(2021년 벤치마크)를 요약하면 다음과 같다.

  • Fluent Bit: 적은 CPU 자원으로도 높은 효율을 보이며, 높은 부하에서도 성능 저하가 크지 않음. 단, 대용량 로그 처리 시 메모리 사용량이 증가함.
  • Fluentd: 대량의 로그를 안정적으로 처리하지만, CPU와 메모리 사용량이 상대적으로 높음.
  • Vector: 가장 뛰어난 로그 처리 성능을 보였지만, CPU 사용량이 Fluent Bit보다 2~3배 많음.

Fluentd는 Fluent Bit 및 Vector와 비교했을 때 특별한 장점이 없기 때문에 고려 대상에서 제외할 수 있다. 결국 Fluent Bit과 Vector 중 하나를 선택해야 하는데, 메모리를 더 많이 활용할 경우 Fluent Bit을, CPU를 더 많이 활용할 경우 Vector를 선택하는 것이 합리적이다.

 

또한, LogStash와 Promtail은 AWS와의 통합이 부족하여 비교군에서 제외되었으며, Rsyslog는 시스템 로그 수집에 초점이 맞춰져 있어 범용성이 떨어지는 것으로 판단된다.


2. Fargate에서 CPU와 메모리의 특징

앞서 메모리를 더 많이 활용할 경우 Fluent Bit을, CPU를 더 많이 활용할 경우 Vector를 선택하는 것이 적절하다는 가설을 세웠다. 이를 검증하기 위해 AWS EKS Fargate의 리소스 할당 방식을 살펴보자.

Fargate의 리소스 할당 방식

AWS Fargate는 EC2 기반이 아닌 서버리스 컨테이너 환경으로, 인스턴스를 직접 관리하지 않는다. 대신, 컨테이너별로 고정된 CPU와 메모리를 할당하는 방식이 적용된다.

CPU (vCPU)

  • Fargate에서는 컨테이너에 할당할 수 있는 vCPU를 정해진 옵션에서 선택해야 함.
  • CPU는 Burstable 방식이 아니며, 설정된 값까지만 사용 가능.
  • 과부하 시 추가적인 CPU 자원이 자동으로 할당되지 않음.

메모리 (RAM)

  • 컨테이너에 고정된 메모리 값을 할당.
  • 메모리가 초과되면 OOM(Out of Memory) Kill 발생 → 프로세스 강제 종료.
  • 하지만 CPU와 다르게 사용 가능한 메모리를 미리 충분히 할당할 수 있음.

결론

할당 가능한 vCPU 할당 가능한 메모리
0.25 vCPU 0.5GB ~ 2GB
0.5 vCPU 1GB ~ 4GB
1 vCPU 2GB ~ 8GB
2 vCPU 4GB ~ 16GB
4 vCPU 8GB ~ 30GB

 

  • Fargate는 CPU 사용량을 필요 이상으로 증가시키는 것이 불리하다. (Burstable X)
  • 메모리는 미리 할당해놓으면 활용 가능, 하지만 초과하면 프로세스가 죽는다.
  • 즉, CPU를 많이 쓰는 Vector는 제약을 받을 가능성이 크고, Fluent Bit처럼 메모리를 활용하는 방식이 유리할 수 있다.

 

따라서 AWS가 Fargate 환경에서 Fluent Bit을 기본 로깅 솔루션으로 선택한 이유는 CPU 사용량을 최소화하면서도 안정적으로 로그를 수집할 수 있기 때문이다.


참고자료

  • logs hipper 비교:  The Top 7 Log Shippers and How to Choose One
  • log collector 벤치마크: Who is the winner — Comparing Vector, Fluent Bit, Fluentd performance 

'탐구 생활 > FastAPI Log' 카테고리의 다른 글

FastAPI log (4) - 개선하기  (0) 2025.03.02
FastAPI log (3) - 설계, 구현  (0) 2025.01.30
FastAPI log (1) - AWS EKS Fargate 환경에서 log 를 외부시스템에 보내기  (0) 2025.01.30
'탐구 생활/FastAPI Log' 카테고리의 다른 글
  • FastAPI log (4) - 개선하기
  • FastAPI log (3) - 설계, 구현
  • FastAPI log (1) - AWS EKS Fargate 환경에서 log 를 외부시스템에 보내기
개발프로브
개발프로브
가볍게, 오랫동안 기록하고 싶은 블로그입니다.
  • 개발프로브
    ProbeHub
    개발프로브
  • 전체
    오늘
    어제
    • 분류 전체보기 (56)
      • 탐구 생활 (47)
        • 개발 탐구 (8)
        • FastAPI CORS (3)
        • FastAPI Log (4)
        • gRPC&Python (4)
        • SpringBoot 파헤치기 (2)
        • Python Monorepo (3)
        • Python 과 zstd (2)
        • Python (4)
        • FastAPI (4)
        • Terraform (8)
        • MSA (0)
        • GraphQL (2)
        • 데이터베이스 (2)
        • 네트워크 (0)
      • 기초 지식 (9)
        • Terraform (2)
        • MSA (5)
        • K8s (2)
  • 블로그 메뉴

    • 링크

      • github
      • stackoverflow
    • 공지사항

    • 인기 글

    • 태그

      granian
      fastapi logging
      ORM 성능
      RDBMS 성능 최적화
      ORM 문제
      FastAPI
      오블완
      java
      티스토리챌린지
      gzip
      백엔드 성능
      python graviton
      Python
      grpc
      python 불변 객체
      python amd64
      sqlalchemy
      PostgreSQL
      ORM 성능 최적화
      fastapi cors
      spring 트랜잭션
      python arn64
      rest vs grpc
      MSA
      django 성능 개선
      brotli
      springboot
      python 성능 개선
      Terraform
      zstd
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    개발프로브
    FastAPI log (2) -AWS EKS Fargate, 왜 Fluent Bit 인가?
    상단으로

    티스토리툴바