Elastic Watcher, yazılım geliştiricilerin ve sistem yöneticilerinin gerçek zamanlı veri takibini, tetikleyici koşulları ve otomatik aksiyonları yönetmesini sağlar. Esnek ve güçlü yapısıyla, kritik süreçlerinizi otomatikleştirerek sistemlerinizi daha güvenli ve verimli hale getirir.
Bu yazıda, Elastic Watcher’ın temel bileşenlerini kullanarak dinamik değişkenler, esnek tetikleme koşulları ve zamanlama mekanizmaları üzerinden bir uçtan uca örnek inceleyeceğiz.
Watcher'ın Yapısı: Temel Bileşenler
Elastic Watcher dört ana bileşenden oluşur:
- Input: İzlenecek veri kaynağı.
- Condition: Koşulların kontrol edildiği alan.
- Transform: Verilerin işlenip düzenlenmesi.
- Action: Şartlar karşılandığında alınan aksiyonlar.
Bu yapı, Watcher’ın esnekliğini ve gücünü ortaya koyar.
Örnek Senaryo: Sistem Performansını İzleme
Senaryo Tanımı: Bir sistemde CPU kullanımı %85’i ve bellek kullanımı %90’ı geçtiğinde, yöneticilere Slack üzerinden uyarı gönderilecek ve olay ElasticSearch üzerinde bir indeks içinde kaydedilecek. Süreç boyunca dinamik değişkenler kullanarak mesajları özelleştireceğiz.
1. Input: Veri Kaynağını Belirlemek
"input": {
"search": {
"request": {
"indices": ["system-metrics"],
"body": {
"query": {
"range": {
"timestamp": {
"gte": "now-5m/m",
"lt": "now/m"
}
}
},
"aggs": {
"avg_cpu": { "avg": { "field": "cpu.usage" } },
"avg_memory": { "avg": { "field": "memory.usage" } }
}
}
}
}
}Bu sorgu, son 5 dakika içinde CPU ve bellek kullanım ortalamalarını hesaplar.
2. Değişkenler ve Transform: Veriyi Özelleştirme
"transform": {
"script": {
"source": """
def cpu_usage = ctx.payload.aggregations.avg_cpu.value;
def memory_usage = ctx.payload.aggregations.avg_memory.value;
ctx.payload.high_cpu = cpu_usage > 85;
ctx.payload.high_memory = memory_usage > 90;
ctx.payload.alert_message = 'CPU: ' + cpu_usage + '%, Bellek: ' + memory_usage + '%';
return ctx.payload;
"""
}
}Bu bölümde dinamik değişkenler oluşturulur, koşullar belirlenir ve kullanıcıya özel mesajlar hazırlanır.
3. Condition: Dinamik Koşullar
"condition": {
"script": {
"source": """
return ctx.payload.high_cpu || ctx.payload.high_memory;
"""
}
}Bu koşul, CPU veya bellek kullanımının eşik değerlerini aştığında true döner.
4. Action: Aksiyonları Tanımlama
"actions": {
"slack_alert": {
"slack": {
"message": {
"text": "{{ctx.payload.alert_message}}. Lütfen durumu kontrol edin."
}
}
},
"log_event": {
"index": {
"index": "alerts",
"doc": {
"alert_type": "Kritik Sistem Durumu",
"cpu": "{{ctx.payload.aggregations.avg_cpu.value}}",
"memory": "{{ctx.payload.aggregations.avg_memory.value}}",
"timestamp": "{{ctx.execution_time}}"
}
}
}
}Bu örnekte, hem Slack bildirimi gönderilir hem de ElasticSearch indeksine olay kaydedilir.
Zamanlama: İşlemleri Planlama
"trigger": {
"schedule": {
"cron": "0 * * * *"
}
}Bu örnek, her saat başında çalışacak şekilde yapılandırılmıştır.
Daha Karmaşık Bir Senaryo: Malzeme Kontrolü
"transform": {
"script": {
"source": """
def missing_items = [];
if (ctx.payload.aggregations.avg_cpu.value > 85) {
missing_items.add('CPU kapasitesi');
}
if (ctx.payload.aggregations.avg_memory.value > 90) {
missing_items.add('Bellek kapasitesi');
}
ctx.payload.missing_items = missing_items;
return ctx.payload;
"""
}
}Action kısmında bu eksik malzemeler, Slack üzerinden bildirilir.
Sonuç
Elastic Watcher, karmaşık süreçleri otomatikleştirme ve hızlı aksiyon almayı sağlayan etkili bir araçtır. Dinamik değişkenler, cron tabanlı zamanlama ve gelişmiş condition yönetimi ile Elastic Watcher, izleme süreçlerinizi daha etkili hale getirir.
