docs: Fluent Bit 컨테이너 메타데이터 수집 실패 문제 문서화
- 9/27 재시작 이후 container_name 필드 누락 문제 - Docker_Mode만으로는 메타데이터 추출 불가 - FILTER 섹션 추가 필요성 명시 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
b4a58af67b
commit
d82ac720f7
@ -0,0 +1,60 @@
|
|||||||
|
---
|
||||||
|
date: 2025-09-29
|
||||||
|
author: admin
|
||||||
|
tags: [fluent-bit, opensearch, logging, docker]
|
||||||
|
---
|
||||||
|
|
||||||
|
# Fluent Bit 컨테이너 메타데이터 수집 실패 문제
|
||||||
|
|
||||||
|
## 문제 상황
|
||||||
|
- **발생일**: 2025-09-27 12:22 재시작 이후
|
||||||
|
- **환경**: 51123 서버 Fluent Bit → Data Prepper → OpenSearch
|
||||||
|
- **증상**: 컨테이너 로그는 수집되나 container_name 필드 누락 (모두 "unknown")
|
||||||
|
- **영향**: 9/27 19:16 이후 대부분 컨테이너 로그 식별 불가
|
||||||
|
|
||||||
|
## 원인 분석
|
||||||
|
### 타임라인
|
||||||
|
- 9/27 12:22: Fluent Bit 컨테이너 재시작 (hostexecutor-fluent-bit 이미지)
|
||||||
|
- 9/27 19:16: 마지막 정상 rb8001 로그 수집
|
||||||
|
- 9/28: 전체 컨테이너 로그 수집 실패 (fluent-bit 자체 로그만)
|
||||||
|
- 9/29: 일부 복구되었으나 메타데이터 여전히 누락
|
||||||
|
|
||||||
|
### 근본 원인
|
||||||
|
```ini
|
||||||
|
# 현재 설정 (이미지 내장)
|
||||||
|
[INPUT]
|
||||||
|
Name tail
|
||||||
|
Path /var/lib/docker/containers/*/*-json.log
|
||||||
|
Parser docker
|
||||||
|
Docker_Mode On # 이 설정만으로는 메타데이터 추출 불가
|
||||||
|
```
|
||||||
|
- Docker_Mode는 deprecated, 실제 메타데이터 추출 안됨
|
||||||
|
- Parser는 JSON만 파싱, container_name/id 추출 못함
|
||||||
|
- FILTER 섹션 없어서 Docker 메타데이터 enrichment 누락
|
||||||
|
|
||||||
|
## 해결 방안
|
||||||
|
### 즉시 조치 - Fluent Bit 설정 수정
|
||||||
|
```ini
|
||||||
|
[FILTER]
|
||||||
|
Name docker
|
||||||
|
Match docker.*
|
||||||
|
Labels On
|
||||||
|
# Docker 메타데이터 자동 추가 (container_name, container_id 등)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 영구 조치 - 외부 설정 파일 관리
|
||||||
|
1. fluent-bit 저장소에 설정 파일 추가
|
||||||
|
2. docker-compose.yaml 수정하여 설정 마운트
|
||||||
|
3. Git Actions 통해 자동 배포
|
||||||
|
|
||||||
|
## 검증 명령
|
||||||
|
```bash
|
||||||
|
# 컨테이너별 로그 확인
|
||||||
|
curl -s "http://localhost:9200/dataprepper-*/_search" | \
|
||||||
|
python3 -c "import sys,json; [print(h['_source'].get('container_name','unknown')) for h in json.load(sys.stdin)['hits']['hits']]"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 교훈
|
||||||
|
- Docker 이미지 내장 설정은 변경 추적 어려움
|
||||||
|
- 중요 설정은 외부 파일로 관리 필수
|
||||||
|
- Fluent Bit Docker_Mode는 FILTER와 함께 사용해야 함
|
||||||
Loading…
x
Reference in New Issue
Block a user