# OpenSearch HDD 마이그레이션

## 문제
- OpenSearch 데이터가 SSD(/var/lib/opensearch)에 저장
- SSD 용량 부족 우려

## 해결

### 1. 데이터 마이그레이션
```bash
sudo mkdir -p /mnt/hdd/opensearch
sudo cp -rp /var/lib/opensearch/* /mnt/hdd/opensearch/
sudo chown -R 1000:1000 /mnt/hdd/opensearch
```

### 2. 설정 파일 변경

**파일**: `/home/admin/opensearch/docker-compose.yaml`
- 34번 라인: `/var/lib/opensearch` → `/mnt/hdd/opensearch`

**파일**: `/home/admin/opensearch/.gitea/workflows/cicd.yml`
- 17-19번 라인: `/var/lib/opensearch` → `/mnt/hdd/opensearch`
- 30-31번 라인: 기존 컨테이너 중복 방지 코드 추가

**파일**: `/home/admin/opensearch/Dockerfile`
- 보안 인증서 COPY 라인 제거
- `ENV plugins.security.disabled=true` 추가

### 3. 보안 플러그인 비활성화
- docker-compose.yaml 15번 라인: `DISABLE_SECURITY_PLUGIN=true`
- 내부 네트워크 전용 서비스로 TLS 불필요

### 4. 해결 과정 중 발생한 문제
- Actions 실패: TLS 인증서 파일 없음 → 보안 플러그인 비활성화로 해결
- 컨테이너 이름 충돌 → Actions에 기존 컨테이너 제거 코드 추가
- 설정 중복 에러 → Dockerfile ENV 제거, docker-compose.yaml에서만 설정

### 5. 최종 상태
- 데이터 경로: `/mnt/hdd/opensearch` (354MB)
- 컨테이너: opensearch (opensearch-opensearch-node 이미지)
- 포트: 9200, 9600
- HDD 여유 공간: 869GB
- API 응답: 정상
- 로그 수집: fluent-bit → data-prepper → OpenSearch 정상

### 6. 추가 이슈 (2025-09-30)
- **문제**: 9/29부터 로그 수집 중단
- **증상**: fluent-bit → data-prepper 200 OK, 하지만 OpenSearch 저장 실패
- **에러**: `Cannot deserialize value of type java.util.ArrayList from Object value`
- **원인**: Data Prepper가 JSON 배열 `[{...}]` 요구, fluent-bit이 단일 객체 `{...}` 전송
- **시도한 해결책**:
  - json_array on 추가 (Fluentd 전용 파라미터, Fluent Bit에는 없음)
  - Flush 5초, Grace 30 설정 (배치 처리 시도)
  - Format json_lines (Data Prepper 비호환)
- **상태**: 미해결, 추가 조사 필요

### 7. 커밋 이력
- 7466068: HDD 경로 변경
- 5f7bf49: Actions 워크플로우 경로 수정
- 2df7afb: 보안 플러그인 비활성화
- 8f667d3: DISABLE_SECURITY_PLUGIN 환경변수 수정
- 66b5ee8: Dockerfile 중복 설정 제거