# 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) ### 문제 - 51124 서버의 Fluent Bit이 127.0.0.1로 보내서 51123 OpenSearch에 도달 못함 ### 해결 - fluent-bit.conf: Host를 ${OPENSEARCH_HOST} 환경변수로 변경 - 51123 서버 .env: OPENSEARCH_HOST=127.0.0.1 - 51124 서버 .env: OPENSEARCH_HOST=192.168.219.45 - 결과: 양쪽 서버 로그 모두 51123 OpenSearch에 수집됨