Elasticsearch ILM ve Index Template ile Doğru Rollover Yapılandırması
Elasticsearch ILM (Index Lifecycle Management), log indekslerini otomatik yönetmek için kullanılır. Ancak ILM’nin YYYY.MM formatında indekslerle çalışmadığını unutmamak gerekir.
Elasticsearch ILM (Index Lifecycle Management), log indekslerini otomatik yönetmek için kullanılır. Ancak ILM’nin YYYY.MM formatında indekslerle çalışmadığını unutmamak gerekir. ILM’nin doğru çalışması için indekslerin aşağıdaki gibi olması gerekir:
✅ Yanlış Format: bff-neo-api-logs-2024.11
✅ Doğru Format: bff-neo-api-logs-2024.11-000001
Bu yazıda, ILM’nin beklediği şekilde indeksleri oluşturmak için doğru bir ILM tanımı ve Index Template tanımı paylaşacağım. Ayrıca, mevcut indeksleri ILM’ye bağlamak isteyenler için toplu güncelleme komutlarını da ekleyeceğim.
📌 1. Elasticsearch ILM Politikası Tanımı
Öncelikle ILM policy’yi tanımlayalım. Bu policy log indekslerini 3 gün boyunca saklayacak ve sonra silecektir.
PUT _ilm/policy/yami-api-logs
{
"policy": {
"phases": {
"hot": {
"min_age": "0ms",
"actions": {
"rollover": {
"max_age": "3d",
"max_primary_shard_size": "50gb"
},
"set_priority": {
"priority": 100
}
}
},
"delete": {
"min_age": "7d",
"actions": {
"delete": {}
}
}
}
}
}
Bu policy, indekslerin 3 gün sonra rollover yapmasını ve 7 gün sonra otomatik olarak silinmesini sağlar.
📌 2. Doğru Index Template Tanımı
Aşağıdaki Index Template, ILM’nin beklediği formatta yeni indeksler oluşturur ve ILM policy’sine bağlar.
PUT _index_template/yami-api-logs-template
{
"index_patterns": ["yami-api-logs-*"],
"template": {
"settings": {
"index.lifecycle.name": "yami-api-logs",
"index.lifecycle.rollover_alias": "yami-api-logs",
"index.number_of_shards": 1,
"index.number_of_replicas": 1
},
"aliases": {
"yami-api-logs": {
"is_write_index": true
}
}
}
}
Bu template şu işlemleri yapar: ✅ Yeni oluşturulan yami-api-logs-*
indekslerini ILM’ye bağlar.
✅ Otomatik olarak yami-api-logs
alias’ını ekler.
✅ Yeni indekslere ILM rollover özelliğini tanımlar.
📌 3. Mevcut İndeksleri Toplu Güncelleme
Eğer daha önce oluşturulmuş indeksleri ILM politikasına bağlamak istiyorsanız, önce indeksleri listeleyin:
GET _cat/indices/yami-api-logs-*?v
Sonrasında, indeksleri toplu olarak ILM’ye bağlamak için aşağıdaki komutu çalıştırın:
PUT yami-api-logs-*/_settings
{
"index.lifecycle.name": "yami-api-logs"
}
Bu komut, tüm yami-api-logs-*
indekslerini yami-api-logs
ILM policy’sine bağlayacaktır.
📌 ILM Formatına Uymayan İndeksler İçin Alternatif Çözüm
Eğer mevcut indekslerinizi ILM formatına uyarlamak istemiyorsanız, rollover özelliğini kapatıp, ILM’yi sadece zaman bazlı silme işlemi için kullanabilirsiniz.
Bunun için aşağıdaki gibi bir ILM politikası oluşturabilirsiniz:
PUT _ilm/policy/yami-api-logs-simple
{
"policy": {
"phases": {
"hot": {
"min_age": "0ms",
"actions": {
"set_priority": {
"priority": 100
}
}
},
"delete": {
"min_age": "7d",
"actions": {
"delete": {}
}
}
}
}
}
Bu policy, rollover kullanmadan indeksleri 7 gün sonra otomatik olarak silecektir.
Mevcut indeksleri bu ILM’ye bağlamak için şu komutu kullanabilirsiniz:
PUT yami-api-logs-*/_settings
{
"index.lifecycle.name": "yami-api-logs-simple"
}
📌 Sonuç
Bu yazıda Elasticsearch ILM’yi doğru şekilde yapılandırmak için gerekli adımları anlattık:
✅ ILM policy oluşturduk.
✅ Doğru index template tanımladık.
✅ Mevcut indeksleri ILM’ye bağlamak için toplu güncelleme komutu verdik.
✅ ILM formatına uymayan indeksler için alternatif çözüm sunduk.
Bu adımları uygulayarak Elasticsearch’te log yönetimini otomatik hale getirebilirsiniz. 🚀