Ana içeriğe atla

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
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 &