Fluent-Bit
1 Fluent Bit
- Fluent Bit은 Fluentd의 경량 버전이라고 생각하면 된다.
1.1 Fluent Bit과 Fluentd
Fluent Bit과 Fluentd 비교

- Fluentd와 Fluentbit은 상호 배타적 관계가 아니다.
- Fluentbit은 Fluentd의 경량 버전이라고 생각하면 쉽다.
- Fluentbit과 Fluentd의 관계는 Beats와 Logstash의 관계와 유사하다.
- https://logz.io/blog/fluentd-vs-fluent-bit/를 참고하자.
Fluent Bit과 Fluentd를 같이 사용하는 아키텍처가 가능하다

- Fluent Bit을 daemonset을 이용해서 노드마다 하나씩 배포한다.
- Fluent Bit은 데이터를 수집하고 Fluentd로 포워딩한다.
- Fluentd는 클러스터 당 하나의 인스턴스를 배포한다.
- Fluent Bit로부터 받은 데이터를 aggregation하고 다시 포워딩한다.
1.2 Key Concept
1.2.1 Event or Record
- 레퍼런스
- Fluent Bit로 들어오는 모든 데이터 조각들을 Event 또는 Record라고 부른다.
- 데이터: 로그 또는 메트릭
Event의 포맷
- Event는 아래 3가지로 구성된다.
- timestamp
- key/value metadata (since v2.1.0)
- payload
[[TIMESTAMP, METADATA], MESSAGE]
- TIMESTAMP: 초 단위로 표현된 정수 또는 부동소수점 값으로 나타내는 타임스탬프입니다(문자열이 아님).
- METADATA: 이벤트 메타데이터를 포함하는 가능성이 있는 객체
- MESSAGE: 이벤트 본문을 포함하는 객체
Structured Messages
- Messages는 아래와 같이 Structure를 가질수도 있고 아닐수도 있다.
{"project": "Fluent Bit", "created": 1398289291}"Project Fluent Bit created on 1398289291"
- structure가 있는 메시지를 처리하는 것이 더 빠르다.
1.2.2 Tag
- 모든 이벤트에는 Tag가 부여된다.
- Tag는 이후 필터 단계와 아웃풋 단계에서 사용된다.
- 대부분의 Tag는 설정을 통해 직접 부여된다.
- 만약 Tag를 명시하지 않으면 Fluent Bit는 자동으로 인풋 플러그인의 이름을 Tag로 부여한다.
1.3 Data Pipeline
%20(2)%20(2)%20(2)%20(2)%20(2)%20(2)%20(2)%20(1).png?alt=media)
- Fluent Bit로 들어오는 데이터는 아래와 같은 파이프라인을 거친다.
- input
- Parser
- Filter
- Buffer
- Router
- Output