본문 바로가기

ELK

[Curator] Curator를 이용하여 elasticsearch index 관리

curator

elasticsearch의 인덱스 삭제/생성, 스냅샷 삭제/생성 shard routing allocation 변경 등의 작업을 반복적인 작업을 yaml파일 형태로 정의하여 관리할 수 있다. (참고)

curator 설치 (linux ubuntu 기준)

먼저 pip가 설치되어야 한다.

 

sudo apt update sudo apt install python3-pip

위 명령어를 통해 pip가 설치 되면 다음 명령어를 통해 설치가 되었는지 확인

 

pip --version

설치가 되었다면 다음 명령어를 통해 curator를 설치할 수 있다.

 

pip install elasticsearch-curator

 

curator 설정

먼저 curator의 환경 설정을 하는 파일을 만든다.

 

# curator.yml 
client: 
    hosts: 
        - 127.0.0.1 
    port: 9200 
    url_prefix: 
    use_ssl: False 
    certificate: 
    client_cert: 
    client_key: 
    ssl_no_validate: False 
    http_auth: 
    timeout: 30 
    master_only: False 
logging: 
    loglevel: INFO 
    logfile: 
    logformat: default 
    blacklist: ['elasticsearch', 'urllib3']

기본 설정 그대로 써도 무방하다.


curator 는 대표적인 삭제 방식으로 두 가지가 있다.

1. 날짜 기반 삭제

 

# time_base_delete 
actions:
    1:
        action: delete_indices
        options:
            ignore_empty_list: True
            continue_if_exception: False
            disable_action: False
        filters:
        - filtertype: pattern
          kind: prefix
          value: equipment-search-log-
        - filtertype: age
          source: name
          direction: older
          timestring: '%Y.%m.%d'
          unit: days
          unit_count: 0

 

equipment-search-log- 로 시작하는 인덱스를 0일이 지났으면 삭제하도록 설정하였다. (인덱스가 당일 날짜밖에 없는 관계로)
원하는 초과 일 수가 있으면 unit-count의 숫자만 바꿔주면 된다.



그리고 위 action 파일을 실행시켜준다.

 

/home/ubuntu/.local/bin/curator --config /home/ubuntu/config-files/curator.yml --dry-run curator-file/delete-indices.yml

 [curator 위치] --config [curator 설정 파일 위치] [action 파일 위치]

* dry-run 은 테스트 실행 옵션

 

실행하면 위와같이 12월 3일에 생성된 인덱스가 삭제 되었다  로그가 출력된다.

dry-run 을 빼고 실행하면

 

 

삭제 전(왼쪽) 과 삭제 후(오른쪽) 의 kibana 상태

위와 같이 삭제 로그가 출력되고 kibana를 통해 인덱스를 확인해보면 삭제된것을 확인할 수 있다.

 

2. 용량 기반 삭제

 

#size base delete 
actions: 
	1: 
    	action: delete_indices 
        options: 
        	ignore_empty_list: True 
            timeout_override: 300 
            continue_if_exception: False 
            disable_action: False 
        filters: 
        - filtertype: pattern
          kind: prefix 
            value: equpment-seach-logs-
        - filtertype: space 
          disc_space: 10 
          use_age: True 
          source: creation_date

equipment-search-log- 로 시작하는 인덱스가 10GB를 초과하면 오래된 순서로 삭제하도록 설정하였다.
기준 용량을 바꾸려면 disc_space 의 숫자를 바꿔주면 된다.


(필터 참고)

curator cron

마지막으로 curator를 자동적으로 특정 주기마다 삭제를 진행할 수 있도록 cron에 등록해준다.

 

#curator_cron 
SHELL=/bin/bash 
PATH=/sbin:/bin:/urs/sbin:/usr/bin 
HOME=/

0 0 * * * root /home/ubuntu/.local/bin/curator --config /home/ubuntu/config-files/curator.yml /home/ubuntu/curator-file/delete-indices.yml > /home/ubuntu/log/curator/curator.log 2>&1

 

위 cron 은 매일 00시에 해당 curator를 실행하게되며 특정 날짜 또는 용량에 따라 인덱스 정리를 하게되고,

마지막 코드에 의해 /home/ubuntu/log/curator 디렉토리에 curator.log 파일로 curator 동작에 대한 로그 내역이  남게된다.