Kubernetes Fluent Bit 완벽 가이드! Container Log 수집 Agent 운영 구조 이해하기

Kubernetes 환경에서 Application Log를 중앙에서 관리하기 위해서는 Log 수집 Agent가 필요합니다.

앞선 글에서 Kubernetes Logging Architecture 구조를 알아봤다면, 실제 운영 환경에서는 Node마다 발생하는 Container Log를 어떻게 수집하는지가 중요합니다.

Production Kubernetes Cluster에서는 수십 개 이상의 Node와 수백 개 이상의 Pod가 실행될 수 있습니다.

이때 모든 Pod의 Log를 직접 확인하는 것은 현실적으로 어렵습니다.

예:

Application Pod 500개

각각 Log 발생

운영자가 직접 확인 불가능

따라서 Kubernetes에서는 Log Agent를 사용하여 자동으로 Log를 수집합니다.

대표적인 Log Agent:

  • Fluent Bit
  • Fluentd
  • Filebeat

그중 Fluent Bit은 가볍고 빠른 성능 때문에 Kubernetes 환경에서 가장 많이 사용되는 Log 수집 Agent 중 하나입니다.

구성 요소역할
Fluent BitLog 수집 Agent
DaemonSetNode별 Agent 실행
InputLog 입력
FilterLog 가공
OutputLog 전달

Fluent Bit 구조를 이해하면 Kubernetes 환경에서 Container Log를 자동 수집하고 중앙 Logging 시스템을 구축할 수 있습니다.

Kubernetes Fluent Bit이 필요한 이유

Kubernetes Container Log는 기본적으로 Node 내부에 저장됩니다.

구조:

Application Container

stdout / stderr

Container Runtime

Node Log

삭제 가능

문제:

Pod 삭제

Local Log 손실

또는

Node 장애

Log 접근 불가

따라서 Log를 외부 Storage로 전달하는 과정이 필요합니다.

Fluent Bit이란?

Fluent Bit은 Cloud Native 환경을 위한 경량 Log Processor입니다.

주요 특징:

  • 낮은 Memory 사용량
  • 빠른 Log 처리
  • 다양한 Output 지원
  • Kubernetes 친화적 구조

특히 Kubernetes에서는 DaemonSet 형태로 배포됩니다.

Kubernetes Fluent Bit 동작 구조

전체 흐름:

Application Container

Container Log 생성

Node Log File

Fluent Bit Pod

Log Parsing

Central Logging Storage

검색 및 분석

각 Node에서 발생하는 Log를 자동으로 수집합니다.

Kubernetes Fluent Bit과 DaemonSet 관계

Fluent Bit은 대부분 DaemonSet으로 설치합니다.

이유:

Kubernetes Cluster:

Node 1

Fluent Bit 실행

Node 2

Fluent Bit 실행

Node 3

Fluent Bit 실행

모든 Node의 Log를 수집해야 하기 때문입니다.

새로운 Node 추가:

Node 생성

DaemonSet Controller 확인

Fluent Bit 자동 생성

운영 확장성이 뛰어납니다.

Kubernetes Fluent Bit Input 구조

Input은 Log 데이터를 어디에서 가져올지 정의합니다.

대표 Input:

Tail Input

가장 많이 사용됩니다.

역할:

Node Log File 읽기

예:

/var/log/containers/*.log

Container Log를 수집합니다.

Kubernetes Fluent Bit Filter 구조

Filter는 수집한 Log를 가공합니다.

예:

기존 Log:

error occurred

변환:

{
 "level":"error",
 "message":"error occurred",
 "namespace":"production"
}

분석하기 좋은 형태로 변경합니다.

Kubernetes Fluent Bit Kubernetes Filter

Kubernetes 환경에서는 Kubernetes Metadata를 추가할 수 있습니다.

추가 정보:

  • Pod 이름
  • Namespace
  • Container 이름
  • Label

예:

Log:

Database connection failed

변환:

{
 "pod":"mysql-0",
 "namespace":"production",
 "message":"Database connection failed"
}

장애 분석이 쉬워집니다.

Kubernetes Fluent Bit Output 구조

Output은 Log를 어디로 전달할지 결정합니다.

대표:

Output용도
Elasticsearch검색 중심 Logging
LokiGrafana 기반 Logging
CloudWatchAWS 환경
Kafka대규모 Streaming

운영 환경에 맞게 선택합니다.

Kubernetes Fluent Bit 설치 구조

일반적인 구성:

Namespace 생성

ConfigMap 생성

DaemonSet 배포

ServiceAccount 연결

Log 수집 시작

Kubernetes Resource로 관리됩니다.

Fluent Bit ConfigMap 구조

Fluent Bit 설정은 ConfigMap으로 관리합니다.

포함:

  • Input 설정
  • Filter 설정
  • Output 설정

예:

kind: ConfigMap
metadata:
  name: fluent-bit-config

설정을 변경하면 Logging 동작을 조정할 수 있습니다.

Kubernetes Fluent Bit Resource 관리

Log Agent도 Container이기 때문에 Resource 관리가 필요합니다.

설정:

  • CPU Request
  • Memory Request
  • Limit

이유:

Log 수집 Agent가 Node Resource를 과도하게 사용하면 Application에 영향을 줄 수 있습니다.

Kubernetes Fluent Bit 장애 사례

문제원인
Log 미수집Path 설정 오류
Log 중복Buffer 설정 문제
Memory 증가Filter 처리 문제
Output 실패Storage 연결 오류

Log Pipeline 전체 확인이 필요합니다.

Kubernetes Fluent Bit Log 보관 구조

일반적인 운영 구조:

Fluent Bit

Loki / Elasticsearch

Storage

Retention Policy

장기간 장애 분석을 위해 보관 정책을 설정합니다.

Kubernetes Fluent Bit와 Loki 비교

최근 Kubernetes 환경에서는 Loki 조합도 많이 사용합니다.

구조:

Fluent Bit

Loki

Grafana

장점:

  • 가벼운 구조
  • Kubernetes 친화적
  • 비용 효율적

대규모 검색 환경에서는 Elasticsearch 조합도 사용합니다.

Kubernetes Fluent Bit 운영 전략

Production 환경에서는:

1단계

Log Format 통일

2단계

Fluent Bit 배포

3단계

Storage 연결

4단계

Dashboard 구성

5단계

Alert 연결

순서로 구성합니다.

Kubernetes Fluent Bit 장점

장점설명
경량성낮은 Resource 사용
확장성Node 증가 대응
자동 수집운영 효율 증가
다양한 연결여러 Storage 지원

Kubernetes Logging 환경에서 중요한 Component입니다.

자주 묻는 질문

Fluent Bit과 Fluentd 차이는 무엇인가요?

Fluent Bit은 경량 Agent에 적합하고 Fluentd는 더 복잡한 데이터 처리에 적합합니다.

Fluent Bit은 왜 DaemonSet으로 실행하나요?

모든 Kubernetes Node의 Log를 수집해야 하기 때문입니다.

Fluent Bit 없이 Kubernetes 운영이 가능한가요?

가능하지만 Production 환경에서는 중앙 Logging 구성이 일반적입니다.

마무리

Kubernetes Fluent Bit은 Container Log를 자동으로 수집하고 중앙 Logging 시스템으로 전달하는 핵심 Log Agent입니다.

구성 요소역할
Fluent BitLog 수집
DaemonSetNode별 실행
FilterLog 가공
OutputStorage 전달

Fluent Bit 구조를 이해하면 Kubernetes 환경에서 대규모 Container Log를 안정적으로 관리하고 장애 분석 환경을 구축할 수 있습니다.

다음 글에서는 Kubernetes Log 저장과 검색 시스템을 구성하는 Kubernetes Loki 완벽 가이드! Grafana 기반 Lightweight Logging 시스템 구축 방법 이해하기를 알아보겠습니다.

댓글 남기기