2023. 11. 25. 18:59ㆍ코딩/잡 공부
fluentd와 fluent bit 설명, 뜻, 차이점, 장점, 설치 과정 설정 방법
fluentd와 fluent bit 설명, 뜻
Fluentd와 Fluent 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 설치 및 설정
- 설치:
RubyGems를 통해 Fluentd를 설치할 수 있습니다
gem install fluentd
또는 Docker 이미지를 사용할 수 있습니다:
docker pull fluent/fluentd
- 설정:
설정 파일은 일반적으로 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 설치 및 설정
- 설치:
패키지 매니저를 통해 설치하거나, 공식 사이트에서 제공하는 설치 스크립트를 사용할 수 있습니다.
예를 들어, 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 타입으로 저장
- 하단 문서를 보면 parser json을 붙여서 해결이 되어야 하는데, 작동하지 않음
- https://medium.com/@su_bak/how-to-remove-log-key-in-fluent-bit-62ce3450124b
- Json Parser 내부 구현 확인해보니, Time_Key가 수상하여 이를 제거한 custom parser 사용해보니 해결
- Time_Key가 수상하여 빼보았더니 정상 작동
참고 문서
- Fluentd vs FluentBit (velog.io)
- Fluentd를 이용한 로그 수집 서버 구성 (tistory.com)
- [Docker] Dockerfile 개념 및 작성법 (tistory.com)
- fluentd 설정하기 (with docker) (tistory.com)
- fluent/fluent-plugin-s3: Amazon S3 input and output plugin for Fluentd (github.com)
fluentd와 fluent bit 설명, 뜻, 차이점, 장점, 설치 과정 설정 방법
'코딩 > 잡 공부' 카테고리의 다른 글
DB 인덱스의 장단점 (1) | 2024.05.10 |
---|---|
캐시 전략 (0) | 2024.05.10 |
Hyper V 가상 머신 우분투 리눅스 용량 확장 (0) | 2023.04.17 |
consul 도커 클러스터링, ACL 정책, 권한 설정 (clustering consul in docker) (0) | 2023.04.03 |
etcd / consul - config 콘피그 서비스 비교 / 설명 / 분석 / 클러스터링 / TLS / ACL 설정 세팅 (0) | 2023.03.29 |