Fluent Bit
GenD 감사 로그 수집 파이프라인인 Fluent Bit의 구성 방법입니다.
개요
Fluent Bit은 DaemonSet으로 모든 노드에 배포되어 gend-api 컨테이너의 감사 로그를 수집하고 OpenSearch로 전달합니다. AuditMiddleware가 출력한 JSON 로그만 필터링하여 전송합니다.
배포 구성
| 리소스 | 파일 |
|---|---|
| ConfigMap | infra/fluent-bit/configmap.yaml |
| DaemonSet | infra/fluent-bit/daemonset.yaml |
| ServiceAccount | infra/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_Interval | 5초 | 파일 갱신 확인 주기 |
Mem_Buf_Limit | 5MB | 메모리 버퍼 제한 |
Flush | 5초 | OpenSearch 전송 주기 |
Retry_Limit | 3 | 전송 실패 시 재시도 |
감사 로그 형식
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 설정
| 설정 | 값 |
|---|---|
Host | opensearch.gend.svc.cluster.local |
Port | 9200 |
Index | gend-audit |
Logstash_Format | On (일별 인덱스) |
Logstash_Prefix | gend-audit |
문제 해결
- 로그 미수집:
kubectl logs -n gend -l app=fluent-bit로 Fluent Bit 로그 확인 - OpenSearch 연결 실패: OpenSearch Pod 상태 및 서비스 DNS 확인
- 메모리 초과:
Mem_Buf_Limit증가 또는Flush주기 단축