ILM 자체는 인덱스 생명 주기를 자동으로 관리해주지만, ILM 적용을 매번 수동으로 한다면 아이러니한 일 아닌가?
그래서 인덱스가 생성될 때, 자동으로 ILM policy를 적용시키는 방법이 필요했다.
그러기 위해 있는 것이 index template 이란 것이다.
index template은 새로운 index가 생성될 때, 그 index에 대한 설정 값들을 미리 만들어두는 것이다.
자세한 설명과 예시는 아래 링크에서 다른 분이 정리한 것을 참고바란다.
https://oboki.net/workspace/data-engineering/elasticsearch/elasticsearch-index-template/
내 목표는 다음과 같다.
일별로 생성되는 인덱스에 대해서, 자동적으로 7일 후에 삭제 되는 ILM policy를 적용시키는 것이다.
참고로 7일 후에 삭제 되는 ILM policy는 자동으로 생성되는 watch-history-ilm-policy를 사용하였다.
방법은 간단하다.
index template을 이용해서, 특정 index가 생성될 때 watch-history-ilm-policy가 적용되도록 하면 된다.
fluentd의 설정값만 바꿔주면 된다.
1. index-template.json 파일 추가
index_template.json: |-
{
"index_patterns": [
"logstash-*"
],
"settings": {
"index": {
"lifecycle": {
"name": "watch-history-ilm-policy",
"rollover_alias": ""
}
}
}
}
index_patterns에는 적용시킬 인덱스 이름을 넣고
settings.index.lifecycle.name에 적용시킬 ILM policy 이름을 넣어주면 된다.
2. kubernetes.conf 설정 추가
kubernetes.conf: |-
<match fluent.**>
...
enable_ilm true
#ilm_policy_id watch-history-ilm-policy
#ilm_policy_overwrite false
#ilm_policy {}
#rollover_index true
template_name delete-after-7days
template_file /fluentd/etc/index_template.json
...
</match>
...
나처럼 하는 경우엔 주석처리 부분은 제외하고 적으면 된다.
위에서 작성한 index-template.json을 마운트한 경로로 template_file의 값을 주자.
만약 직접 ILM policy를 정의하고 싶다면 주석처리 부분을 풀고 ilm_policy에 직접 그 규칙을 적어주면 된다.
이렇게만 설정해주고 적용하면 끝이다!
나는 두 파일을 같은 configmap으로 정의했다.
하나의 configmap으로 두 개의 파일을 마운트하는 방법은 아래 글을 참고바란다.
참고로 kubernetes.conf의 마운트 경로는 /fluentd/etc/kubernetes.conf 이다.
'공부 > EFK' 카테고리의 다른 글
Opendistro와 OIDC(Keycloak) 연동 on Kubernetes (0) | 2021.04.16 |
---|---|
Kibana [index_not_found_exception] no such index [.kibana] 에러 해결 (0) | 2021.03.11 |
curl을 이용한 Kibana index 패턴 생성 (0) | 2021.03.11 |
Kibana basePath 설정 (Configuration 설정) (0) | 2021.03.11 |