인덱스 생명 주기 관련 설정 입니다.
진행 과정시 주의할점
#1 rollover alias can point to multiple indices ~
Index lifecycle error illegal_argument_exception: Rollover alias [index-log] can point to multiple indices, found duplicated alias [[index-log]] in index template
Kibana Index Template에 alias 설정 해놓으면 rollover 과정에서 multiple indces error가 발생
https://discuss.elastic.co/t/rollover-index-issue-with-elasticsearch-6-2/123852
문제는 쓰기 별칭이 실제로 정의에 따라 여기에서 여러 인덱스를 가리킬 수 있다는 것입니다.
별칭을 롤오버하면 동일한 접두사를 가진 다른 인덱스가 생성됩니다.
따라서 어느 시점에서 다음을 갖게 됩니다.
쓰기 별칭이 있는 이전 인덱스
쓰기 별칭이 있는 새 인덱스(템플릿에 있기 때문에)
이로 인해 불일치가 발생할 수 있습니다.
라는 문구를 확인했습니다.
그래서 진행 과정 중 Template alias와 rollover alias를 다르게 설정해주었습니다.
#2 Current action에는 rollover를 진행중이라고 적어져 있지만 실제로는 rollover가 실행되지 않음
indices.lifecycle.poll_interval
(Dynamic, time unit value) How often index lifecycle management checks for indices that meet policy criteria. Defaults to 10m
인덱스 수명 주기 관리가 정책 기준을 충족하는 인덱스를 확인하는 빈도입니다. 기본값은 10m입니다.
기본값 변경 필요 (1초)
PUT /_cluster/settings
{
"persistent": {
"indices.lifecycle.poll_interval": "1s"
}
}
1단계 : Life Cycle Policy Create (인덱스 생명 주기 정책)
인덱스 생명 주기 4단계
1단계 : Hot phase
인덱스가 활발하게 업데이트되고 쿼리 수행
2단계 : Warm phase
인덱스가 더 이상 업데이트 되지 않지만 여전히 쿼리 수행
3단계 : Cold phase
인덱스가 더 이상 업데이트되지 않고 거의 쿼리 미수행. 검색은 가능
4단계 : Delete phase
색인이 더 이상 필요하지 않으며 안전하게 삭제
Kibana > Stack Magement > Index Lifecycle Polices
Hot phase 설정
rollover 조건 설정
1. Maximum index size 50kilobytes
2. Maximum documents 100개
3. Maximum age 1minutes
위 3가지 조건중 하나라도 달성되면 index가 rollover 됨
Delete phase 설정
index 삭제 조건 설정
1. Timing for delete phase 5 minutes from rollover
# index-policy 조회
GET _ilm/policy/index-policy
{
"index-policy" : {
"version" : 1,
"modified_date" : "2022-07-21T04:30:59.654Z",
"policy" : {
"phases" : {
"hot" : {
"min_age" : "0ms",
"actions" : {
"rollover" : {
"max_size" : "50kb",
"max_age" : "1m",
"max_docs" : 100
},
"set_priority" : {
"priority" : 100
}
}
},
"delete" : {
"min_age" : "5m",
"actions" : {
"delete" : {
"delete_searchable_snapshot" : true
}
}
}
}
}
}
}
2단계 : Index Template Create
Kibana > Stack Magement > Index Management > index Templates
1. Create template
- index patterns : index-log-* (index-log-로 시작하는 모든 index )
1단계에서 만들어준 Index Lifecycle Policies 설정
index settings
rollover를 위한 alias index-log 설정
{
"index": {
"lifecycle": {
"name": "index-policy",
"rollover_alias": "index-log"
},
"number_of_shards" : "1",
"number_of_replicas" : "0"
}
}
Aliases
index-log-* 전체를 묶을 alias all-log-index 설정
{
"all-log-index": {}
}
index template 설정 완료
# index tempalte 조회
GET _index_template/index-template
{
"index_templates" : [
{
"name" : "index-template",
"index_template" : {
"index_patterns" : [
"index-log-*"
],
"template" : {
"settings" : {
"index" : {
"lifecycle" : {
"name" : "index-policy",
"rollover_alias" : "index-log"
},
"number_of_shards" : "1",
"number_of_replicas" : "0"
}
},
"aliases" : {
"all-log-index" : { }
}
},
"composed_of" : [ ]
}
}
]
}
index-log-000001 Index 생성 alias index-log로 설정
PUT index-log-000001
{
"aliases": {
"index-log": {
"is_write_index": true
}
}
}
Index Management에 두개의 Aliases 확인
Lifecycle policy 정책 설정 확인
설정 완료
1m마다 rollover 되는것을 확인
'ELK' 카테고리의 다른 글
Elastic APM 구성해보기 (0) | 2022.08.24 |
---|---|
Elasticsearch nori plugin 사용해보기 (0) | 2022.07.27 |
Elasticsearch Ingest Node PipeLine 사용해 보기 (0) | 2022.07.19 |
Elasticsearch Analyzer 분석 (0) | 2022.07.18 |
Elasticsearch Scroll Search API 조회 (0) | 2021.07.14 |