본문 바로가기
Elastic Stack

Curator 를 이용한 오래된 index 자동 삭제

Curator?

Curator는 elasticsearch 의 관리를 위하여 반복적인 작업을 ymal파일 형태로 저장 하여 실행하는 기능을 수행 한다.
인덱스의 삭제/생성, 스냅샷의 생성/삭제, shard routing allocation 변경 등을 진행 한다.

Curator 설치

내부망 환경에서 설치 되어 있기때문에 외부 인터넷 망에서 virtualenv로 설치 후, 해당 폴더를 그래도 이동 하여 사용 중임
pip을 이용 하여 elasticsearch-curator 설치(elasticsearch-curator5 버전으로 elasticsearch5,6 사용 가능)
이외에도 rpm파일 설치나, 소스로 설치 가능하다. (https://www.elastic.co/guide/en/elasticsearch/client/curator/5.5/installation.html)
# source /opt/virtualenv/bin/activate
(virtualenv) [root@openstack_test virtualenv]# pip install elasticsearch-curator

 

Curator 설정 

먼저, 기본적으로 대상이 되는 elasticsearch의 정보가 있는 파일을 설정 해야 한다.

/monitoring/elk_work_dir/curator/curator-config.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']
 action 을 수행하는 action.yml파일을 추가한다.
해당 파일은 특정 기간이 지난 index에 대하여 삭제 하는 설정으로 unit을 days로  설정 하고 , unit_count가 11로 설정 하여  11일이 지난 index에 대하여 삭제 된다.
(/monitoring/elk_work_dir/curator/delete_indices.yml)
---
actions:
  1:
    action: delete_indices
    options:
      ignore_empty_list: True
      disable_action: False
    filters:
    - filtertype: pattern
      kind: prefix
      value: logstash-
    - filtertype: age
      source: name
      direction: older
      timestring: '%Y.%m.%d'
      unit: days
      unit_count: 11

 

해당 action을 실행하기전 기존의 index의 상태를 확인 한다. 실행 하는 날짜 기준(2018년 10월 21일) 으로 11일을 설정 하였기 때문에 logstash-2018.10.10이 삭제 되어야 한다.

x

 

아래와 같이 dry-run을 통하여 수행 예정인  job을 미리 확인 할 수 있다.
dry-run을 통하여 테스트시 삭제 예정인 logstash-2018.10.10 인덱스가 삭제 될 것이라는것을 확인 할 수 있다.
# /opt/virtualenv/bin/curator --config curator-config.yml --dry-run  delete_indices.yml
2018-10-21 13:54:00,809 INFO      Preparing Action ID: 1, "delete_indices"
2018-10-21 13:54:00,819 INFO      Trying Action ID: 1, "delete_indices": No description given
2018-10-21 13:54:00,878 INFO      DRY-RUN MODE.  No changes will be made.
2018-10-21 13:54:00,878 INFO      (CLOSED) indices may be shown that may not be acted on by action "delete_indices".
2018-10-21 13:54:00,878 INFO      DRY-RUN: delete_indices: logstash-2018.10.10 with arguments: {}
2018-10-21 13:54:00,878 INFO      Action ID: 1, "delete_indices" completed.
2018-10-21 13:54:00,878 INFO      Job completed.
이제 실제로 삭제 되는지 --dry-run 옵션을 빼고 진행 하면 job이 완료 된것을 확인 할 수 있다.
# /opt/virtualenv/bin/curator --config curator-config.yml   delete_indices.yml
2018-10-21 13:54:48,876 INFO      Preparing Action ID: 1, "delete_indices"
2018-10-21 13:54:48,886 INFO      Trying Action ID: 1, "delete_indices": No description given
2018-10-21 13:54:48,946 INFO      Deleting selected indices: [u'logstash-2018.10.10']
2018-10-21 13:54:48,946 INFO      ---deleting index logstash-2018.10.10
2018-10-21 13:54:49,110 INFO      Action ID: 1, "delete_indices" completed.
2018-10-21 13:54:49,110 INFO      Job completed.
인덱스를 확인 하면 삭제 하려는 인덱스가 삭제 된것을 확인 한다.

 

Curator cron 등록 

미리 설정한 action을 cron에 등록 하여 반복적으로 action을 수행 할 수 있도록 한다.
아래 cron설정은 매일 오전 5시에 해당 curator action이 수행 되어, 특정기간이 지난 인덱스에 대하여 삭제를 진행 한다.
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
 
## Delete older index of Elasticsearch (By ycy)
  0  5  *  *  * root /opt/virtualenv/bin/curator --config /monitoring/elk_work_dir/curator/curator-config.yml  /monitoring/elk_work_dir/curator/delete_indices.yml
 

 

 

반응형