Curator İşlemleri
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
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 &