Kurulum
CentOS/RHEL
# Curator repository dosyasını oluşturun
vi /etc/yum.repos.d/curator.repo
Repository dosyasına aşağıdaki içeriği ekleyin:
[curator-5]
name=CentOS/RHEL 6 repository for Elasticsearch Curator 5.x packages
baseurl=https://packages.elastic.co/curator/5/centos/6
gpgcheck=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
Curator’ı kurun:
yum install elasticsearch-curator
Ubuntu/Debian
# GPG key'i ekleyin
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
# Repository'yi ekleyin
echo "deb https://packages.elastic.co/curator/5/debian stable main" | sudo tee -a /etc/apt/sources.list.d/curator.list
# Güncelleme ve kurulum
sudo apt-get update
sudo apt-get install elasticsearch-curator
Cron Job Oluşturma
Her gün saat 03:00’te çalışacak şekilde cron job oluşturun:
Aşağıdaki satırı ekleyin:
0 3 * * * /usr/bin/curator --config /mnt/ElasticData/curator/curator.yml /mnt/ElasticData/curator/readonly_shrink.yml
Cron servisini yeniden başlatın:
Logları kontrol etmek için:
sudo tail -900f /var/log/cron
Troubleshooting için şu kaynaklara bakabilirsiniz:
Curator.yml Konfigürasyonu
Curator’ı çalıştırabilmek için curator.yml dosyasına ihtiyaç vardır. Bu dosya içeriği ile curator’ın nereye nasıl bağlanması gerektiğini belirtir:
---
# Remember, leave a key empty if there is no value. None will be a string,
# not a Python "NoneType"
client:
hosts:
- 10.6.1.11
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: curator.log
logformat: default
# default: blacklist: ['elasticsearch', 'urllib3']
Snapshot İşlemleri
Snapshot alabilmek için snapshot ayarlarını içeren yml dosyasına ihtiyaç vardır.
Bunun için curator.yml’a ek olarak snapshot.yml dosyası oluşturulur:
actions:
1:
action: snapshot
options:
disable_action: False
repository: "es_apinizer_snapshot_20200914"
ignore_empty_list: True
wait_interval: 10
max_wait: -1
filters:
- filtertype: age
source: creation_date
direction: older
unit: days
unit_count: 90
Snapshot Repository Oluşturma ve Snapshot Alma
Aşağıdaki komutlar ile önce Elasticsearch’de repository oluşturulur, sonrasında curator ile snapshot.yml çalıştırılır:
# Snapshot dizinini oluşturun
mkdir -p /LOGARSIV/arsiv/apinizerLogBackup/es_apinizer_snapshot_20200914
# Repository eklemek için:
es_repo_mgr --config /mnt/ElasticData/curator/curator.yml \
create fs \
--repository es_apinizer_snapshot_20200914 \
--location /LOGARSIV/arsiv/apinizerLogBackup/es_apinizer_snapshot_20200914 \
--compression true
# Repository silmek için:
es_repo_mgr --config /mnt/ElasticData/curator/curator.yml \
delete --repository es_apinizer_snapshot_20200914
# Snapshot işlemini başlatın
curator --config /mnt/ElasticData/curator/curator.yml \
/mnt/ElasticData/curator/snapshot.yml &
# Snapshot durumunu kontrol edin
curl -X GET "<ELASTICSEARCH_IP>:9200/_snapshot/_status?pretty" > status.json
# Tüm snapshot'ları listele
curl -X GET "<ELASTICSEARCH_IP>:9200/_snapshot/_all?pretty"
# Belirli repository'deki snapshot'ları listele
curl -X GET "<ELASTICSEARCH_IP>:9200/_cat/snapshots/es_apinizer_snapshot_20200914?v&s=id&pretty"
Delete İşlemleri
İstediğimiz index’leri silebilmek için silme ayarlarını içeren yml dosyasına ihtiyaç vardır.
Bunun için curator.yml’a ek olarak delete.yml dosyası oluşturulur:
Delete işlemi geri alınamaz. Silme işleminden önce gerekli yedeklemelerin alındığından emin olunmalıdır.
actions:
1:
action: delete_indices
description: >-
Delete indices older than 90 days
options:
ignore_empty_list: True
disable_action: False
filters:
- filtertype: age
source: creation_date
direction: older
unit: days
unit_count: 90
Aşağıdaki komut ile curator index’leri silmesi için çalıştırılır:
curator --config /mnt/ElasticData/curator/curator.yml \
/mnt/ElasticData/curator/delete.yml &
Readonly & Shrink İşlemleri
İstediğimiz index’lerin modunu readonly yapıp shrink edebilmek için bu ayarları içeren yml dosyasına ihtiyaç vardır.
Bunun için curator.yml’a ek olarak readonly_shrink.yml dosyası oluşturulur:
Shrink işlemi index’lerin shard sayısını azaltarak disk kullanımını optimize eder. Readonly moduna alınan index’ler yazma işlemlerine kapatılır.
actions:
1:
action: index_settings
description: >-
Set log indices older than 2 days to be read only (block writes)
options:
disable_action: False
index_settings:
index:
blocks:
write: True
ignore_unavailable: False
preserve_existing: False
indices:
continue_if_exception: True
filters:
- filtertype: age
source: creation_date
direction: older
unit: days
unit_count: 2
2:
action: shrink
options:
disable_action: False
ignore_empty_list: True
shrink_node: DETERMINISTIC
node_filters:
permit_masters: True
number_of_shards: 1
number_of_replicas: 0
indices:
continue_if_exception: True
shrink_prefix:
shrink_suffix: '-shrink'
delete_after: True
post_allocation:
allocation_type: include
key: node_tag
value: cold
wait_for_active_shards: 1
wait_for_completion: True
wait_for_rebalance: True
wait_interval: 9
max_wait: -1
filters:
- filtertype: age
source: creation_date
direction: older
unit: days
unit_count: 2
Aşağıdaki komut ile curator index’leri readonly yapması ve sonrasında shrink etmesi için çalıştırılır:
curator --config /mnt/ElasticData/curator/curator.yml \
/mnt/ElasticData/curator/readonly_shrink.yml &