Curator Kullanarak Elasticsearch Index'lerini Periyodik Olarak Temizleme

Verilerinizi elasticsearch'de index'lemeye başladıktan belli bir süre sonra disk alanınızın hızla dolduğunu fark edeceksiniz ve akabinde kibana'da yavaşlıklar başlayacak veya grafana elk-disc alert'iniz slack üzerinden size alarmlar gönderme başlayacaktır. Eğer elasticsearch'de index'lediğimiz veriler silmekten yana bir sıkıntı olmayacak türde ise; sonrasında muhtemelen büyük bir çoğunluğumuz ilk yöntem olarak elasticsearch-api kullanarak eski indexleri silmek aklımıza gelecektir. Oldukça ilkel işleyen bir süreç gibi; disk doldu gir makinaya yada postman üzerinden api-call ile log sil. Herhalde hiçbirimizin yapmak istemeyeceği bir yöntem.

Curator bu gibi işlemleri belli rule'lara göre otomatik olarak yapmaya yarayan bir tool'dur. Curator ile, hangi indeksin temizleneceğini ve kaç günlük verinin saklanacağını bir config-file ile tanımlayabilirsiniz ve belli periyotlar ile background-job run ederek rule'lara göre silme işlemini gerçekleştirir.

Örneğin payment-logs-* index'i hariç elasticsearch'de bulunan ve 90 günden daha eski bütün index'leri silmesini Curator'a tanımlayabilir ve Curator'ı haftada bir cron-job olarak çalışacak şekilde programlayarak index'leri sildirebiliriz.

Kurulum

Curator için makinanızda python-pip kurulu olması gerekmekte.

1) Install Python pip

$ sudo apt-get install python-pip

2) Install Curator

$ sudo pip install elasticsearch-curator

3.) Create new directory for config-files

mkdir curator
cd curator
touch config.yml

vim komutu ile config.yml dosyasının içine girip içerisinde bulunacak komutları aşağıdaki gibi yazalım. Bu dosyada elasticsearch adresi ve connection kurarken gerekli olan tanımlar yer almakta.

client:
	hosts:
		- 127.0.0.1
	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:
	logformat: default
	blacklist: ['elasticsearch', 'watches', '.watches','.kibana']

Şimdi ise rule ve aciton'ların yer aldığı actions.yml dosyasını oluşturup içerisini ihtiyacımıza uygun olacak işekilde aşağıdaki komutlarda olduğu gibi yazalım.

actions:
  1:
    action: delete_indices
    description: >-
      Delete indices older than 90 days except payment-logs indices !
    options:
      ignore_empty_list: True
      disable_action: False
    filters:
    - filtertype: pattern
      kind: prefix
      value: payment-logs-
      exclude: True
    - filtertype: age
      source: name
      direction: older
      timestring: '%Y.%m.%d'
      unit: days
      unit_count: 90

Özetle; filtertype: age'i yani creationdate'i 90 günden fazla olan index'leri filtertype: pattern payment-logs index'i hariç silmesini belirttik.

Curator dry-run komutu ile bir nevi test yaparmışcasına komutumuzu çalıştırıp hangi indexleri delete edeceğini silmeden görebiliriz. Bunun için kullanacağımız komut ;

curator --config /root/curator/config.yml --dry-run /root/curator/actions.yml

Artık service olarak çalıştırmak istediğimiz curator'u run etmek için kullanacağımız komut ise aşağıdaki gibi olacaktır.

Curator job'ının her gece saat 02:00 da çalışmasını istiyoruz komutumuz;

0 2 * * * curator --config /root/curator/config.yml /root/curator/actions.yml

Özetleyecek olursak; curator kullanarak silmek istediğimiz elasticsearch index'lerini belli rule'lar tanımlayarak otomatik bir şekilde silmemizi sağlayan bir tool'dur. Bu tool'u kullanarak kolay bir şekilde manuel bir müdahale gerektirmeden eski index'lerden kurtulup elasticsearch makinanızda free disc-space yaratabilirsiniz. Daha fazla bilgi için elasticsearch-curator sayfasına göz atabilirsiniz.

Source

Add comment