2.9 KiB
2.9 KiB
Fluent Bit → OpenSearch 로그 수집 이슈 해결
문제
- 2025-09-30부터 Fluent Bit이 OpenSearch로 로그를 전송하지 못함
- dataprepper-2025.09.30 인덱스가 생성되지 않음
원인 분석
1. Data Prepper JSON 배열 문제
- Data Prepper HTTP 소스는 JSON 배열 형식만 수락
- Fluent Bit HTTP output은 단일 객체 또는 NDJSON으로 전송
- 200 OK 응답 받지만 실제로는 데이터 드롭됨
2. OUTPUT 플러그인 초기화 실패
- opensearch 플러그인이 조용히 실패 (로그 없음)
- stdout 플러그인은 정상 작동
- es (Elasticsearch) 플러그인도 초기화는 되지만 설정 미적용
3. 인덱스 접두어 문제
- es 플러그인이 기본값 'logstash-*'로 저장
- Logstash_Prefix 설정이 적용되지 않음
- 컨테이너 재시작만으로는 설정 변경 미반영
해결 과정
시도한 방법들 (실패)
- Fluent Bit json_array 옵션 추가 → 지원하지 않는 옵션
- Lua 스크립트로 배열 래핑 → 효과 없음
- Data Prepper unframed_requests → 버전 미지원으로 크래시
- 대체 수집기 테스트:
- Logstash → opensearch 플러그인 미설치
- Vector → 매핑 충돌 에러
- Filebeat → 작동하지만 인덱스 생성 안됨
- Fluentd → elasticsearch 플러그인 미설치
최종 해결책
- Data Prepper 우회: Fluent Bit → OpenSearch 직접 전송
- es 플러그인 사용: opensearch 플러그인 대신 es (Elasticsearch) 사용
- 고정 인덱스명: Index 파라미터로 명시적 지정
- 완전 재빌드 필수: docker compose down && up -d --build
작동 설정
[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
핵심 교훈
- 설정 변경 시 완전 재빌드 필수: restart만으로는 설정 미적용
- opensearch 플러그인 비추천: Fluent Bit 4.0.9에서 조용히 실패
- es 플러그인 + Suppress_Type_Name On: OpenSearch 2.0+ 호환성 필수
- 인덱스명 확인 중요: 기본값이 logstash-*라 dataprepper-*로 검색하면 안 보임
- 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에 수집됨