로그 수집 분석과 처리 도구 fluentd와 fluent bit 설명, 뜻, 차이점, 장점, 설치 과정 설정 방법, 분산 로깅 시스템

2023. 11. 25. 18:59코딩/잡 공부

fluentd와 fluent bit 설명, 뜻, 차이점, 장점, 설치 과정 설정 방법

 

fluentd와 fluent bit 설명, 뜻

FluentdFluent Bit는 모두 오픈 소스 로그 수집기이자 프로세서로, 다양한 소스에서 로그 데이터를 수집하고 이를 중앙 집중식 시스템으로 전달하는 데 사용됩니다. 두 도구 모두 Cloud Native Computing Foundation(CNCF)에서 관리하며, 로그 데이터의 효율적인 수집과 처리를 목표로 합니다.

 

 

Fluentd와 Fluent Bit의 차이점

개발 언어 C와 Ruby C
메모리 사용량 약 40MB 약 650KB
성능 고성능 고성능
의존성 일부 Gem 패키지 필요 의존성 없음
플러그인 수 1000개 이상 약 70개
사용 사례 서버 및 컨테이너 환경 임베디드 리눅스, 컨테이너, 서버 등

 

Fluentd는 다양한 플러그인을 통해 유연한 로그 수집과 처리가 가능하며, 서버 및 컨테이너 환경에서 주로 사용됩니다. 반면, Fluent Bit은 C 언어로 개발되어 경량화되었으며, 메모리와 CPU 사용량이 적어 임베디드 시스템이나 리소스가 제한된 환경에서 적합합니다.

 

fluentd, fluent-bit 특징

  • 로그 데이터 수집 프로그램
  • 라이브러리가 아닌 프로그램으로, 일정 주기마다 대상 파일을 감시하여 변경점이 있을 경우 해당 변경점을 특정 장소(서버, 파일, 콘솔 등)에 전송해주는 프로그램
  • fluent-bit는 fluentd의 경량 버전과 흡사

 

Fluentd와 Fluent Bit의 장점

Fluentd의 장점

  • 유연성: 다양한 플러그인을 통해 여러 소스와 목적지에 대한 로그 수집 및 처리가 가능합니다.
  • 확장성: 복잡한 데이터 파이프라인을 구축할 수 있으며, 대규모 시스템에서도 안정적으로 동작합니다.
  • 커뮤니티 지원: 활발한 오픈 소스 커뮤니티를 통해 지속적인 업데이트와 지원을 받습니다.

Fluent Bit의 장점

  • 경량성: 최소한의 리소스로 동작하여 임베디드 시스템이나 리소스가 제한된 환경에 적합합니다.
  • 고성능: C 언어로 개발되어 빠른 처리 속도를 자랑합니다.
  • 독립 실행 가능: 의존성이 없어 설치와 배포가 용이합니다

 

 

fluentd, fluent bit 구조

  • 서버를 여러 대 띄울 경우 파일 이름 겹침 등의 이슈 존재
  • 그 외에도 서버 인스턴스에서 log aggregation까지 하는 경우, 정책 변경 시 모든 서버에서 전부 적용해야 하는 이슈 존재
  • 때문에 서버 인스턴스에서는 단순 forwarding만 진행하고, aggregate server를 따로 두는 것이 트렌드
  • forwarding만 하는 서버 인스턴스에는 경량 버전인 fluent-bit, aggregate server에는 다 기능을 보유한 fluentd 사용

 

 

Fluentd Fluent Bit 설치 과정 및 설정 방법

Fluentd 설치 및 설정

  1. 설치:

RubyGems를 통해 Fluentd를 설치할 수 있습니다

gem install fluentd

 

 

또는 Docker 이미지를 사용할 수 있습니다:

docker pull fluent/fluentd

 

 
  1. 설정:

설정 파일은 일반적으로 fluent.conf로 명명되며, 입력(source), 필터(filter), 출력(match) 섹션으로 구성됩니다.

예시 설정: xml

 
<source>
  @type tail
  path /var/log/nginx/access.log
  pos_file /var/log/td-agent/nginx-access.log.pos
  tag nginx.access
  <parse>
    @type nginx
  </parse>
</source>

<match nginx.access>
  @type stdout
</match>

 

Fluent Bit 설치 및 설정

  1. 설치:

패키지 매니저를 통해 설치하거나, 공식 사이트에서 제공하는 설치 스크립트를 사용할 수 있습니다.

예를 들어, Ubuntu에서는 다음과 같이 설치합니다:

curl -fsSL https://packages.fluentbit.io/fluentbit.key | sudo apt-key add -
sudo add-apt-repository "deb https://packages.fluentbit.io/ubuntu $(lsb_release -cs) main"
sudo apt-get update
sudo apt-get install td-agent-bit
 
 

설정:

설정 파일은 일반적으로 td-agent-bit.conf로 명명되며, 서비스, 입력(INPUT), 필터(FILTER), 출력(OUTPUT) 섹션으로 구성됩니다.

예시 설정: ini

 

[SERVICE]
    Flush        1
    Log_Level    info

[INPUT]
    Name         tail
    Path         /var/log/nginx/access.log
    Parser       nginx
    Tag          nginx.access

[OUTPUT]
    Name         stdout
    Match        nginx.access

 

 

트러블슈팅

  • fluent-bit로 로그 수집 시 JSON 최상단에 log 필드가 생기고, 실제 로그가 string 타입으로 저장
  • Json Parser 내부 구현 확인해보니, Time_Key가 수상하여 이를 제거한 custom parser 사용해보니 해결
    • Time_Key가 수상하여 빼보았더니 정상 작동

참고 문서

 

 

 

fluentd와 fluent bit 설명, 뜻, 차이점, 장점, 설치 과정 설정 방법