Ana içeriğe geç

Curator İşlemleri

bilgi

Apinizer, API trafik log'larını Elasticsearch'e data stream olarak yazar ve Elasticsearch bağlantısında Index Lifecycle Policy (ILM) tanımlanmışsa log indekslerinin rollover ve silme işlemlerini bu politikayla yönetir (ilgili fazlar etkinleştirildiğinde; varsayılan olarak kapalıdır). Eski indekslerin temizlenmesi için öncelikle bu ayarları kullanın; ayrıntılar için Elasticsearch bağlantı sayfasına bakın. Bu sayfadaki Curator adımları, ILM dışında ek index işlemleri gerektiğinde kullanılabilir.

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 &