docs: Fluent-bit 메모리 오버플로우 해결 문서화
- Debug 로그 자기수집 무한루프 문제 분석 - Log_Level debug → info 변경으로 해결 - Mem_Buf_Limit 5MB → 50MB 증가 - 메모리 사용량 정상화 (5.6MB) - rb8001 로그 수집 복구 확인 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
7dc620e680
commit
0bee50de1a
113
troubleshooting/250930_claude_fluent_bit_memory_overflow_fix.md
Normal file
113
troubleshooting/250930_claude_fluent_bit_memory_overflow_fix.md
Normal file
@ -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`
|
||||
|
||||
## 후속 작업
|
||||
완료된 해결책으로 문제 종료
|
||||
Loading…
x
Reference in New Issue
Block a user