아무거나

[qurator] 큐레이터 본문

Data Store/Elastic Stack

[qurator] 큐레이터

전봉근 2019. 5. 23. 11:04
반응형

[큐레이터 - qurator]

ELK 스택을 장기간 운용하게 되면 과거의 많은 로그가 디스크 공간을 차지하게 된다. 매번 운영자가 오래된 데이터를 삭제하는 것보다,

이를 자동화해서 관리하는게 시스템을 보다 안정적으로 운용할 수 있다. 큐레이터는 기간 및 디스크 사이즈 기준으로

오래된 로그를 지워주는 프로그램이다.

ex) 한달 이상된 인덱스를 지워라..

 

1. 설치

   - pip install elasticsearch-curator

   - 명령어에 curator라고 치면 관련에러를 볼 수 있다.

 

2. curator config 설정

# [curator.yml]

   ---
   # Remember, leave a key empty if there is no value.  None will be a string,
   # not a Python "NoneType"
   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']

 

3. time base delete 설정

   // value: tomcat- -> tomcat으로 시작되는 인덱스를 unit_count: 30 -> 30일이 지나면 삭제하라.

# [delete_indices_time_base.yml]

   ---
   actions:
     1:
       action: delete_indices
       description: >-
         Delete indices older than 30 days (based on index name), for tomcat-
         prefixed indices. Ignore the error if the filter does not result in an
         actionable list of indices (ignore_empty_list) and exit cleanly.
       options:
         ignore_empty_list: True
         timeout_override:
         continue_if_exception: False
         disable_action: False
       filters:
       - filtertype: pattern
         kind: prefix
         value: tomcat-
         exclude:
       - filtertype: age
         source: name
         direction: older
         timestring: '%Y.%m.%d'
         unit: days
         unit_count: 30
         exclude:

 

4. delete_indices_time_base (shell script 내용)

# [delete_indices_time_base.sh]

/usr/local/bin/curator /home/ec2-user/delete_indices_time_base.yml --config /home/ec2-user/curator.yml

 

5. sh delete_indices_time_base.sh 테스트

 

6. 디스크에 사용량에 따라 오래된 인덱스를 지워주는걸 설정

   // disk_space: 300(300GB로설정된거임)

   // 숫자 1:, 2: 나눈 이유는 인덱스가 value: filebeat- 또는 value: tomcat- 으로 시작하는 두개의 가정하에 만들었기 때문이다.

 # [delete_indices_size_base.yml]
 
   ---
   actions:
     1:
       action: delete_indices
       description: >-
         Delete indices matching the prefix filebeat in excess of
         300GB of data (75% of 400GB) , starting with the oldest indices, based on index creation_date.
         An empty index list (from no indices being in excess of the size limit, for
         example) will not generate an error.
       options:
         ignore_empty_list: True
         timeout_override: 300
         continue_if_exception: False
         disable_action: False
       filters:
       - filtertype: pattern
         kind: prefix
         value: filebeat-
       - filtertype: space
         disk_space: 300
         use_age: True
         source: creation_date
     2:
       action: delete_indices
       description: >-
         Delete indices matching the prefix tomcat in excess of
         300GB of data (75% of 400GB) , starting with the oldest indices, based on index creation_date.
         An empty index list (from no indices being in excess of the size limit, for
         example) will not generate an error.
       options:
         ignore_empty_list: True
         timeout_override: 300
         continue_if_exception: False
         disable_action: False
       filters:
       - filtertype: pattern
         kind: prefix
         value: tomcat-
       - filtertype: space
         disk_space: 300
         use_age: True
         source: creation_date

 

7. delete_indices_time_base (shell script 내용)

   [delete_indices_size_base.sh]

   /usr/local/bin/curator /home/ec2-user/delete_indices_size_base.yml --config /home/ec2-user/curator.yml

 

8. sh delete_indices_time_base.sh 실행

   - 디스크 스페이스에 현재 300기가 이상 쓴게있으면 알아서 삭제해 준다.

 

9. 그런데 메뉴얼대로 sh을 돌리면 시스템이라 할 수 없으므로 crontab을 지정하자.

   - /etc/cron.d/ 에서 curator_cron 을 생성

     // 현재 데일리 같이 매일 실행하는 걸로 설정되어있다.

# [curator_cron]

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
HOME=/

# daily
0 0 * * * ubuntu /usr/local/bin/curator /home/ubuntu/delete_indices_time_base.yml --config /home/ubuntu/curator.yml > /home/ubuntu/log/curator_purging_time_base.log 2>&1
0 0 * * * ubuntu /usr/local/bin/curator /home/ubuntu/delete_indices_size_base.yml --config /home/ubuntu/curator.yml > /home/ubuntu/log/curator_purging_size_base.log 2>&1

 

10. 고객이 한달 이상된 정보를 원할때

    - 이럴경우를 대비하여 s3에 백업을 해놓는게 좋다​ 

반응형
Comments