Fluent Bit 란?
일반적으로 Loging은 Elastic search, LogStatsh, Kibana 의 앞자리를 따서 ELK 스택이라고 불립니다.
그러나 k8s 처럼 클러스터 환경에서 로그를 수집하는데 LogStatsh 대신 Fluent Bit 을 사용하여 EFK 라고 불리는 경우도 많습니다.
Fluent Bit는 로그 수집기 중 가장 가볍고(다른 수집기에 비해 10배 이상 가볍습니다.)
분산환경을 고려하여 만들어져 k8s 클러스터 환경의 로그 파이프라인 도구로 각광받고 있습니다.
Docs
특징
경량화 : 컨테이너 및 마이크로서비스 아키텍처를 고려하여 설계되었습니다.
다양한 플러그인 : 로그 파일, 메트릭, HTTP 등 다양한 소스에서 데이터를 수집할 수 있도록 플러그인을 제공합니다.
다양한 출력 : ElasticSearch, Kafka, Fluented 등 다양한 출력 플러그인을 제공합니다.
스트림 처리 : 메모리 또는 파일 기반의 버퍼로 데이터 스트림을 효율적으로 처리할 수 있습니다.
파이프라인 처리 : 필터를 통한 데이터 수정이나 데이터 처리가 가능하다
쉬운 배포 : Helm, YAML 등으로 쉬운 배포 및 설정이 가능하다
구성 요소
fluent-bit-daemonset : k8s의 각 노드마다 로그를 수집하는 fluent-bit pod 가 daemonset으로 배포됩니다.
*AWS 환경에 인증이 필요한 경우 fluent-bit pod 에 iam을 연동하여 한다면 oidc를 만들어 SA에 iam을 연동해야 합니다.
fluent-bit-configmap : configmap에 fluent-bit의 동작을 정의 해줘야 합니다.
fluentd : fluent-bit에서 전달한 로그를 수집하는 역할을 한다
파이프라인
Input : fluent-bit이 수집한 로그, 메트릭을 event 또는 record 라고 하며 해당 파이프라인에서 어던 recode를 수집할 지 정의합니다.
Parser : 비 정형데이터를 정형 데이터로 변경할 수 있으며 정규표현식 기법을 사용합니다. docker 파서는 json 형태로 변경해 log라는 key에 stdout을 저장합니다.
Filter : 옵션을 지정하여 원하는 정보만 전송할 수 있습니다.
Buffer : 메모리나 파일에 데이터를 임시 저장할 수 있으며 tag 단위로 chunk가 생성됩니다.
Output : 어디로 보낼지 지정하는 부분으로 CloudWatch, S3, HTTP 등 원하는 곳으로 recode를 보낼 수 있습니다.
설치
Getting Started with Fluent Bit | Fluent Bit: Official Manual
A guide on how to install, deploy, and upgrade Fluent Bit
docs.fluentbit.io
SA, Role, Rolebinding, Configmap, Daemonset을 설치 해야하며 fluent-bit은 k8s 환경을 위한 manifest yaml을 제공합니다.
apiVersion: v1
kind: ConfigMap
date:
fluent-bit.conf: |
[SERVICE]
Parsers_File C:\\fluent-bit\\parsers.conf
[INPUT]
Name tail
Tag kube.*
Path C:\\var\\log\\containers\\*.log
Parser docker
DB C:\\fluent-bit\\tail_docker.db
Mem_Buf_Limit 7MB
Refresh_Interval 10
[INPUT]
Name tail
Tag kubelet.err
Path C:\\k\\kubelet.err.log
DB C:\\fluent-bit\\tail_kubelet.db
[FILTER]
Name kubernetes
Match kube.*
Kube_URL https://kubernetes.default.svc.cluster.local:443
[OUTPUT]
Name stdout
Match *
parsers.conf: |
[PARSER]
Name docker
Format json
Time_Key time
Time_Format %Y-%m-%dT%H:%M:%S.%L
Time_Keep On
Service
fluent-bit 의 전반적인 동작을 정의
Flush : 버퍼 데이터를 출력 플러그인으로 플러시하는 초 간격
Log_Level : 로그 출력 레벨 설정 (info, error, debug 등)
Parsers_File : parser의 정의를 포함하는 파일의 이름
Input
로그 데이터 입력 소스를 정의
Name : 입력 플러그인의 이름을 지정, tail은 파일의 내용을 실시간으로 읽음)
Path : 로그 파일의 경로를 지정
Parser : 로그 파일을 파싱하기 위한 Parser의 이름을 지정
Tag : 입력 데이터에 할당할 태그 지정
Filter
옵션을 지정하여 입력 데이터를 처리하거나 변형
Name : 필터 플러그인의 이름을 지정(grep, modify 등)
Match : 필터가 적용될 태그의 패턴 지정
Regex : grep 필터 사용 시 로그 메시지를 필터링 할 정규 표현식 지정
Add : modify 필터 사용 시 로그 메시지에 추가할 필드 지정
Output
처리된 로그 데이터의 목적지 정의
Name : 출력 플러그인 이름 지정(stdout, loki 등)
Match : 출력에 적용할 태그 패턴 지정
Host, Path, URL : 로그 데이터를 전송할 경로 지정
tls : TLS/SSL 사용 여부 지정
Labels : 로그와 전송할 레이블 값 지정
Parser
로드 데이터 해석 규칙 정의
Name : 파서 이름 지정
Format : 로그의 포맷 유형 지정
Regex : 로그 파싱을 위한 정규 표현식 지정
Time_Key, Time_Format : 로그 메시지 시잔을 추출하기 위한 키와 시간 포맷 지정
'IT Knowledge' 카테고리의 다른 글
Gemini CLI 설치 및 개요 (0) | 2025.06.26 |
---|---|
Airflow EKS Helm 설치 (1) | 2025.05.29 |
Node Exporter 설치 & Prometheus 설정 (0) | 2024.12.11 |
Teams Workflow 생성하기 (0) | 2024.08.20 |
인터넷 상에 노출된 자격증명 탐지 (0) | 2024.05.03 |