DBAtlas · 데이터베이스 운영 아틀라스

ILM 정책 정의, 템플릿으로 연결, rollover 체인 부트스트랩

Elasticsearch인덱스 수명 주기

명령어

PUT _ilm/policy/log-policy
{
  "policy": {
    "phases": {
      "hot": { "actions": { "rollover": { "max_primary_shard_size": "50gb", "max_age": "1d" }, "set_priority": { "priority": 100 } } },
      "warm": { "min_age": "7d", "actions": { "shrink": { "number_of_shards": 1 }, "forcemerge": { "max_num_segments": 1 }, "set_priority": { "priority": 50 } } },
      "delete": { "min_age": "30d", "actions": { "delete": {} } }
    }
  }
}
PUT _index_template/log
{
  "index_patterns": ["log-*"],
  "priority": 500,
  "template": {
    "settings": {
      "number_of_shards": 1,
      "number_of_replicas": 1,
      "index.lifecycle.name": "log-policy",
      "index.lifecycle.rollover_alias": "log"
    }
  }
}
# Create the first index with the write alias (its name must end with a number such as -000001):
PUT log-000001
{
  "aliases": { "log": { "is_write_index": true } }
}

하는 일

hot(rollover), warm(shrink + force merge), delete 단계를 가진 ILM 정책을 만들고, 템플릿을 통해 새 인덱스에 정책과 rollover alias를 적용하며, 쓰기 alias와 함께 체인의 첫 인덱스를 생성한다.

사용 시점

로그나 메트릭 같은 시계열 데이터의 인덱스 크기, 보존, 삭제를 자동화할 때.

주의

warm 및 delete 단계의 min_age는 인덱스 생성이 아니라 rollover 시점부터 계산된다. 정책 변경은 기존 인덱스의 현재 단계가 완료된 후에만 적용된다. warm 단계의 shrink와 forcemerge는 IO가 많으며, force merge가 끝날 때까지 인덱스에 쓰지 않아야 한다. ILM은 기본 10분마다 실행되므로 조건이 즉시 평가되지 않는다.

DBAtlas에서 열기 →

관련 항목