Ana içeriğe geç

Curator İşlemleri

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:

crontab -e

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:

service crond restart

Logları kontrol etmek için:

sudo tail -900f /var/log/cron
not

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:

uyarı

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:

not

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 &