diff --git a/troubleshooting/250930_claude_fluent_bit_memory_overflow_fix.md b/troubleshooting/250930_claude_fluent_bit_memory_overflow_fix.md new file mode 100644 index 0000000..72fc2b1 --- /dev/null +++ b/troubleshooting/250930_claude_fluent_bit_memory_overflow_fix.md @@ -0,0 +1,113 @@ +# Fluent-bit 메모리 오버플로우 및 Debug 로그 무한루프 해결 + +**작성일**: 2025-09-30 +**작성자**: Claude (51124 서버 담당) +**문제**: Fluent-bit debug 로그 자기수집 무한루프로 메모리 버퍼 오버플로우 발생 + +## 문제 상황 + +### 발견된 증상 +- Fluent-bit 메모리 버퍼 5MB 한계 초과 (543,791개 debug 로그) +- rb8001 로그 수집 중단 (17:55에서 멈춤) +- OpenSearch 연결은 정상이나 로그 전송 실패 +- 시스템 리소스 과부하 + +### 근본 원인 +```conf +[SERVICE] + Log_Level debug # 문제의 원인 + Mem_Buf_Limit 5MB # 너무 작은 버퍼 +``` + +**Debug 로그 자기수집 루프**: +1. Fluent-bit가 debug 로그 생성 +2. Docker JSON 로그에 기록됨 +3. Fluent-bit가 자신의 로그를 다시 수집 +4. 더 많은 debug 로그 생성 +5. 무한 반복 → 메모리 오버플로우 + +## 해결 과정 + +### 1단계: 문제 진단 +```bash +# rb8001 로그 상태 확인 +docker logs rb8001 --tail 50 + +# Fluent-bit 로그 확인 (543,791개 debug 로그 발견) +docker logs fluent-bit --tail 100 + +# 메모리 사용량 확인 +docker stats fluent-bit +``` + +### 2단계: Git 충돌 해결 +```bash +cd /home/admin/ivada_project/fluent-bit +git fetch origin +git reset --hard origin/main +``` + +### 3단계: 설정 수정 +```conf +# fluent-bit.conf 수정사항 +[SERVICE] + Log_Level info # debug → info (자기수집 차단) + Flush 5 # 유지 + +[INPUT] + Mem_Buf_Limit 50MB # 5MB → 50MB (버퍼 증가) +``` + +```env +# .env 파일 생성 +OPENSEARCH_HOST=192.168.219.45 # 51124서버용 +``` + +### 4단계: 컨테이너 재시작 +```bash +docker compose down && docker compose up -d --build +``` + +## 해결 결과 + +### 메모리 사용량 정상화 +``` +Before: Fluent-bit 메모리 오버플로우 (5MB 한계 초과) +After: Fluent-bit 5.6MB (0.02% 시스템 메모리) +``` + +### 로그 수집 복구 +``` +Before: rb8001 로그 17:55에서 중단 +After: rb8001 실시간 로그 수집 정상 (03:14:55 최신) +``` + +### 설정 최적화 +- Log_Level: debug → info (무한루프 차단) +- Mem_Buf_Limit: 5MB → 50MB (안정성 확보) +- OPENSEARCH_HOST: 환경변수로 분리 + +## 교훈 + +### 기술적 교훈 +1. **Log_Level debug 주의**: 자기수집 루프 가능성 +2. **메모리 버퍼 크기**: 로그 볼륨에 맞는 적절한 크기 설정 +3. **환경변수 분리**: 서버별 설정 관리 용이성 +4. **Git 작업 순서**: 충돌 시 reset --hard 활용 + +### 운영 교훈 +1. **실시간 모니터링**: 메모리 사용량 정기 체크 필요 +2. **로그 레벨 정책**: Production 환경에서는 info 이상 권장 +3. **버퍼 크기 계산**: 피크 로그 볼륨의 2-3배로 설정 +4. **설정 변경 검증**: 재시작 후 메모리/CPU 사용량 확인 + +### 예방 조치 +Log_Level debug 사용 금지, 메모리 버퍼 적정 크기 유지 + +## 관련 파일 +- `/home/admin/ivada_project/fluent-bit/fluent-bit.conf` +- `/home/admin/ivada_project/fluent-bit/.env` +- `/home/admin/ivada_project/fluent-bit/docker-compose.yaml` + +## 후속 작업 +완료된 해결책으로 문제 종료 \ No newline at end of file