본문으로 건너뛰기

Fluent Bit

GenD 감사 로그 수집 파이프라인인 Fluent Bit의 구성 방법입니다.

개요

Fluent Bit은 DaemonSet으로 모든 노드에 배포되어 gend-api 컨테이너의 감사 로그를 수집하고 OpenSearch로 전달합니다. AuditMiddleware가 출력한 JSON 로그만 필터링하여 전송합니다.

배포 구성

리소스파일
ConfigMapinfra/fluent-bit/configmap.yaml
DaemonSetinfra/fluent-bit/daemonset.yaml
ServiceAccountinfra/fluent-bit/serviceaccount.yaml
kubectl apply -f infra/fluent-bit/

파이프라인 구성

[INPUT] tail → gend-api 컨테이너 로그

[FILTER] grep → "gend.audit" 패턴 필터링

[FILTER] regex → JSON 부분 추출

[FILTER] parser → JSON 파싱

[OUTPUT] opensearch → gend-audit 인덱스

주요 설정

설정설명
Path/var/log/containers/gend-api-*.log수집 대상
Refresh_Interval5초파일 갱신 확인 주기
Mem_Buf_Limit5MB메모리 버퍼 제한
Flush5초OpenSearch 전송 주기
Retry_Limit3전송 실패 시 재시도

감사 로그 형식

AuditMiddleware가 출력하는 로그 형식:

2026-01-01 12:00:00 INFO gend.audit -- {"method":"GET","path":"/api/v1/catalog/catalogs","status":200,"user":"admin","duration_ms":45,...}

Fluent Bit은 gend.audit 패턴으로 필터링한 후 JSON 부분만 추출하여 OpenSearch에 전송합니다.

OUTPUT 설정

설정
Hostopensearch.gend.svc.cluster.local
Port9200
Indexgend-audit
Logstash_FormatOn (일별 인덱스)
Logstash_Prefixgend-audit

문제 해결

  • 로그 미수집: kubectl logs -n gend -l app=fluent-bit로 Fluent Bit 로그 확인
  • OpenSearch 연결 실패: OpenSearch Pod 상태 및 서비스 DNS 확인
  • 메모리 초과: Mem_Buf_Limit 증가 또는 Flush 주기 단축

관련 문서