Data Engineering/opensearch

OpenSearch Snapshot Lifecycle Policy(SLM)로 Searchable Snapshot 자동화하기

ygtoken 2025. 8. 6. 22:24
728x90

 

앞서 우리는 Searchable Snapshot을 직접 생성하고 복원하여 원격에서 검색하는 방법까지 살펴봤습니다.

하지만 운영 환경에서는 매번 수동으로 API를 호출하기보다는, 자동으로 snapshot을 생성하고 관리하는 것이 필요합니다.

 

이번 글에서는 OpenSearch의 Snapshot Lifecycle Management(SLM) 기능을 사용하여,

정기적으로 Searchable Snapshot을 만들고, 기존 인덱스를 remote searchable 형태로 전환하는 전체 과정을 소개합니다.

 


 

📌 왜 SLM이 필요한가?

항목 설명
💼 자동화 수동 API 호출 없이 자동으로 snapshot 생성
🧹 관리 용이성 snapshot 보존 주기, 이름 규칙, 실패 알림 등 설정 가능
🔁 ILM 연계 특정 시점에 인덱스를 snapshot으로 전환하고 searchable 상태 유지 가능
💥 장애 대응 실시간 백업처럼 활용 가능 (DR 복구 목적 포함)

 


 

🧭 전체 흐름

1. Snapshot 저장소 등록 (MinIO)
2. Snapshot Lifecycle 정책 정의
3. 정책 실행 스케줄 설정 (예: 매일 자정)
4. ILM에서 warm → searchable snapshot 단계 설정

 


 

🛠 1. Snapshot 저장소 등록 (MinIO 기반)

 

이전 글에서 다뤘던 내용과 동일합니다.

PUT _snapshot/minio-warm
{
  "type": "s3",
  "settings": {
    "bucket": "warm-snapshot-bucket",
    "base_path": "snapshots/",
    "readonly": false
  }
}

 


 

📝 2. Snapshot Lifecycle Policy(SLM) 생성

PUT _slm/policy/daily-logs-snapshot
{
  "schedule": "0 0 * * *",  
  "name": "<daily-logs-{now/d}>",
  "repository": "minio-warm",
  "config": {
    "indices": ["logs-*"],
    "ignore_unavailable": true,
    "include_global_state": false
  },
  "retention": {
    "expire_after": "30d",
    "min_count": 5,
    "max_count": 30
  }
}

📌 주요 설명:

 

  • "schedule": 크론식 (매일 0시 = 자정)
  • "name": 날짜 기반 snapshot 이름
  • "retention": 보존 기간 및 개수 제한 (30일 초과되면 자동 삭제)

 


 

🔄 3. ILM 정책에 연동하기

PUT _ilm/policy/logs_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_age": "7d",
            "max_size": "50gb"
          }
        }
      },
      "warm": {
        "actions": {
          "searchable_snapshot": {
            "snapshot_repository": "minio-warm"
          }
        }
      },
      "delete": {
        "min_age": "90d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

 


 

🧪 4. SLM 상태 확인 및 수동 실행

 

 

A. 정책 상태 확인

GET _slm/policy/daily-logs-snapshot

 

B. 수동 실행 (강제로 지금 snapshot 생성)

POST _slm/policy/daily-logs-snapshot/_execute

 


 

📁 5. 저장된 스냅샷 확인

GET _snapshot/minio-warm/_all

예시 결과:

{
  "snapshots": [
    {
      "snapshot": "daily-logs-2023.08.06",
      "state": "SUCCESS",
      "start_time": "...",
      "indices": ["logs-2023.08.05", "logs-2023.08.06"]
    }
  ]
}

 


 

📈 시각화 및 모니터링

 

  • OpenSearch Dashboards > Snapshot and Restore 메뉴
  • 정책 실행 이력 및 성공/실패 확인
  • Slack, Webhook 등을 연동하여 알림도 가능

 


 

📌 마무리

 

Snapshot Lifecycle Policy(SLM)를 통해 Searchable Snapshot 구조는 더욱 자동화되고 유연한 로그 아키텍처가 됩니다.

 

✅ Warm Tier를 제거하고,
✅ Searchable Snapshot으로 장기 데이터를 관리하며,
✅ SLM으로 자동 백업 + ILM 연계까지 완성하면,

 

운영자 개입 없이도 탄탄한 로그 보존 및 분석 체계를 갖출 수 있습니다.

 

728x90