DOCS/troubleshooting/20250930_fluent_bit_opensearch_issue.md
happybell80 56f0360844 docs: Fluent Bit 최종 해결 과정 업데이트
- 멀티 서버 로그 수집 환경변수 분기
- debug 로그 무한루프 해결 (Log_Level info)
- Actions Git 충돌 해결 과정
- 현재 상태: 양쪽 서버 정상 수집 중
2025-09-30 03:21:20 +09:00

94 lines
3.5 KiB
Markdown

# Fluent Bit → OpenSearch 로그 수집 이슈 해결
## 문제
- 2025-09-30부터 Fluent Bit이 OpenSearch로 로그를 전송하지 못함
## 원인 분석
### OUTPUT 플러그인 초기화 실패
- opensearch 플러그인이 조용히 실패 (로그 없음)
- stdout 플러그인은 정상 작동
- es (Elasticsearch) 플러그인도 초기화는 되지만 설정 미적용
### 3. 인덱스 접두어 문제
- es 플러그인이 기본값 'logstash-*'로 저장
- Logstash_Prefix 설정이 적용되지 않음
- 컨테이너 재시작만으로는 설정 변경 미반영
## 해결 과정
### 시도한 방법들 (실패)
1. Fluent Bit json_array 옵션 추가 → 지원하지 않는 옵션
2. Lua 스크립트로 배열 래핑 → 효과 없음
3. Data Prepper unframed_requests → 버전 미지원으로 크래시
4. 대체 수집기 테스트:
- Logstash → opensearch 플러그인 미설치
- Vector → 매핑 충돌 에러
- Filebeat → 작동하지만 인덱스 생성 안됨
- Fluentd → elasticsearch 플러그인 미설치
### 최종 해결책
1. **Data Prepper 우회**: Fluent Bit → OpenSearch 직접 전송
2. **es 플러그인 사용**: opensearch 플러그인 대신 es (Elasticsearch) 사용
3. **고정 인덱스명**: Index 파라미터로 명시적 지정
4. **완전 재빌드 필수**: docker compose down && up -d --build
### 작동 설정
```ini
[SERVICE]
Parsers_File /fluent-bit/etc/parsers.conf
Log_Level debug
Flush 5
Grace 30
[OUTPUT]
Name es
Match *
Host 127.0.0.1
Port 9200
Index dataprepper-static
Suppress_Type_Name On
Trace_Error On
Retry_Limit False
```
## 핵심 교훈
1. **설정 변경 시 완전 재빌드 필수**: restart만으로는 설정 미적용
2. **opensearch 플러그인 비추천**: Fluent Bit 4.0.9에서 조용히 실패
3. **es 플러그인 + Suppress_Type_Name On**: OpenSearch 2.0+ 호환성 필수
4. **인덱스명 확인 중요**: 기본값이 logstash-*라 dataprepper-*로 검색하면 안 보임
5. **Data Prepper는 JSON 배열만 수락**: HTTP output 대신 es/opensearch 직접 연결 권장
## 현재 상태 (2025-09-30 03:16)
- 양쪽 서버 로그 정상 수집 중
- 51123: fluent-bit, opensearch, auth-server, robeing-gateway
- 51124: rb8001, robeing-skill-news, skill-email, skill-embedding, skill-publish, skill-rag-file, robeing_monitor
- 로그 증가 속도: 분당 23개 (정상)
- OpenSearch 총 용량: 640MB
## 최종 해결 과정
### 1. 멀티 서버 로그 수집
**문제**: 51124 서버의 Fluent Bit이 127.0.0.1로 보내서 51123 OpenSearch에 도달 못함
**해결**: 환경변수로 Host 분기
- fluent-bit.conf: `Host ${OPENSEARCH_HOST}`
- docker-compose.yaml: `OPENSEARCH_HOST=${OPENSEARCH_HOST:-127.0.0.1}`
- 51123 서버 .env: `OPENSEARCH_HOST=127.0.0.1`
- 51124 서버 .env: `OPENSEARCH_HOST=192.168.219.45`
### 2. debug 로그 무한루프 문제
**문제**: Log_Level debug로 Fluent Bit 자기 자신 로그를 수집하는 무한루프
- 5초마다 5MB 버퍼 초과로 멈춤
- 하루 수십만개 debug 로그 생성
**해결**: `Log_Level debug → info` 변경
- 메모리 버퍼도 5MB → 50MB 증가
- Docker 완전 재빌드 필수 (restart로는 적용 안 됨)
### 3. Actions 배포 충돌
**문제**: 51124 서버 .env 파일 Git 충돌 (`<<<<<<< HEAD` 마커)
**해결**: Git Actions에서 강제 reset으로 충돌 해결
- `git reset --hard origin/main`으로 로컬 변경사항 무시
- Actions 배포 성공 확인