diff --git a/troubleshooting/250929_51123_fluent_bit_container_metadata_missing.md b/troubleshooting/250929_51123_fluent_bit_container_metadata_missing.md index f8fbbfd..91cdd01 100644 --- a/troubleshooting/250929_51123_fluent_bit_container_metadata_missing.md +++ b/troubleshooting/250929_51123_fluent_bit_container_metadata_missing.md @@ -34,15 +34,27 @@ tags: [fluent-bit, opensearch, logging, docker] ## 해결 방안 -### 1. fluent-bit.conf 수정 - tail 유지 + lua 필터 -- **docker 입력은 메트릭 전용** (로그 수집 불가) -- tail 입력 유지 필수 -- lua 또는 modify 필터로 경로에서 컨테이너 ID 추출 -- 예: `/var/lib/docker/containers/{container_id}/{container_id}-json.log` +### 현재 상태 (미해결) +- fluent-bit.conf:29 - 작동 안 하는 `[FILTER] Name docker` 존재 +- docker-compose.yaml:13 - `/var/run/docker.sock` 마운트 있으나 활용 안 됨 +- lua 스크립트 없음, Path_Key 설정 없음 -### 2. docker-compose.yaml 수정 (필요 시) -- lua 필터에서 Docker API 호출 필요 시 `/var/run/docker.sock` 마운트 -- 단순 경로 파싱만 한다면 불필요 +### 필요한 수정사항 + +#### 1. fluent-bit.conf 수정 +- 29-35번 라인 `[FILTER] Name docker` 섹션 제거 (v4.0.9에 없는 필터) +- INPUT 섹션에 `Path_Key filepath` 추가 (파일 경로를 레코드에 포함) +- lua 필터 추가 필요 + +#### 2. lua 스크립트 작성 (extract_container_id.lua) +- 경로에서 container_id 추출: `/var/lib/docker/containers/{id}/{id}-json.log` +- container_name 얻으려면: + - 방법1: `/var/lib/docker/containers/{id}/config.v2.json` 파일 읽기 + - 방법2: docker.sock 마운트 유지하고 Docker API 호출 + +#### 3. docker-compose.yaml 수정 +- lua 스크립트 마운트: `./extract_container_id.lua:/fluent-bit/etc/extract.lua:ro` +- docker.sock: container_name 필요 시 유지, ID만 필요하면 제거 ### 3. Dockerfile 오류 - 13번 라인: `COPY certs/root.pem /fluent-bit/certs/root.pem`