일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- jenkins
- ubuntu
- springboot
- php
- Oracle
- Spring Batch
- Web Server
- Spring
- JVM
- java
- linux
- laravel
- MySQL
- Gradle
- Spring Boot
- 맛집
- AWS
- tool
- elasticsearch
- jsp
- Git
- javascript
- devops
- db
- Design Patterns
- it
- redis
- 요리
- IntelliJ
- ReactJS
- Today
- Total
아무거나
[qurator] 큐레이터 본문
[큐레이터 - 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에 백업을 해놓는게 좋다
'Data Store > Elastic Stack' 카테고리의 다른 글
검색쿼리 요청시 count(size) 10000이 넘을 경우 에러 (0) | 2019.05.27 |
---|---|
AWS S3를 활용한 ELK 스택 로그 백업 및 복원 (0) | 2019.05.24 |
[FileBeat] 설치 및 테스트 (0) | 2019.05.22 |
[logstash] 실전 주식 분석 (0) | 2019.05.22 |
[logstash] 실전 인구분석 (0) | 2019.05.20 |