ELASTIC ALARM CREATE

Uğur Duran
4 min readNov 4, 2021

--

Selamlar , ben Uğur . Bugün sizlere workfordreamseries altıncı sayımda sizlere elastic üzerinde microservislerimiz log’larını tuttuğumuz sistem üzerinde alarm oluşturma yapısı için kalemi ekime alıyorum.

Verilerinizdeki sorgular kullanılarak periyodik olarak değerlendirilen koşullara dayalı eylemler oluşturmak için kullanabileceğiniz bir Elasticsearch özelliğidir. Saatler, görev açısından kritik ve iş açısından kritik akış verilerini analiz etmek için yararlıdır.
Örneğin, performans kesintileri için uygulama günlüklerini izleyebilir veya güvenlik tehditleri için erişim günlüklerini denetleyebilirsiniz. Başlamak için ana menüyü açın ve ardından .

Stack Management > Watcher ‘ı tıklayın.

Bu kullanıcı arayüzü ile şunları yapabilirsiniz…

  • Basit bir eşik saati oluşturun İzleme geçmişinizi ve işlem durumunuzu görüntüleyin
  • Bir saati devre dışı bırakın ve silin
  • API sözdizimini kullanarak gelişmiş bir saat oluşturun

Burada alarm oluşturmadan önce microservisin nasıl çalıştığı ve log’lama mekanizmasının nasıl olduğu çok önemli. Örneğin , bu yapıya uygun uygulamanın bizim için. INFO , ERROR ya da WARN seviyesinde log’lama yapısında olması bizim için kritik role oynamaktadır.

İzleme geçmişini ve durumunu görüntüleyin

İzleyici genel bakış sayfası, saatlerinizi listeler ve durum, son tetiklenen ve son tetiklenen gibi ayrıntıları içerir. Bir saat dört durumdan birine sahiptir:

FIRING : Saat tetiklenir ve ilgili eylemleri aktif olarak gerçekleştirir.
ERROR : Saat düzgün çalışmıyor.
OK : Saat aktif olarak çalışmıyor ama düzgün çalışıyor.
DISABLE: Saat hiçbir koşulda çalışmayacaktır.

Execution history

Örnek olarak istenen Alarm kuralları aşağıdaki gibidir.

Elasticsearch filtresi:

module : MODULE_NAME and messages : “ERROR” and kubernetes.node.name : “YOUR_DONAMIN_ADRESSES”

module : MODULE_NAME and messages : “ERROR” and kubernetes.node.name : “YOUR_DONAMIN_ADRESSES”

Advanced watch Json Örneği ;
{
“trigger”: {
“schedule”: {
“interval”: “15m” — -> Tetiklenme aralığı
}
},
“input”: {
“search”: {
“request”: {
“search_type”: “query_then_fetch”,
“indices”: [
“YOUR_INDEX-*” — -> Kontrol edilecek index
],
“rest_total_hits_as_int”: true,
“body”: {
“size”: 0,
“query”: {
“bool”: {
“filter”: {
“range”: {
“@timestamp”: {
“gte”: “{{ctx.trigger.scheduled_time}}||-30m”, — -> Kontrol edilecek aralık (Burada son 30 dk aralık kontrol edilmiştir.)
“lte”: “{{ctx.trigger.scheduled_time}}”,
“format”: “strict_date_optional_time||epoch_millis”
}
}
},
“must”: [
{ — -> Elasticsearch query’si Module name YOUR_MODULE_NAME ve Loglevel ERROR olan logların toplanması
“match”: {
“module”: “YOUR_MODULE_NAME”
}
},
{
“match”: {
“logLevel”: “ERROR”
}
}
]
}
}
}
}
}
},
“condition”: {
“compare”: {
“ctx.payload.hits.total”: {
“gte”: 100 → Yukarıda belirtilen kurallara uygun şartın 100'den fazla olup olmadığını eğer fazla ise actions bölümünün çalışmasını sağlar.
}
}
},
“actions”: { — -> IVR entegrasyonu bu kısımda alarmınıza özel request kullanmalısınız.
“webhook_1”: {
“webhook”: {
“scheme”: “https”,
“host”: “YOUR_HOST_NAME”,
“port”: 443,
“method”: “post”,
“path”: “YOUR_HOSTNAME_PATH”,
“params”: {},
“headers”: {},
“body”: “””{“type”:”1", “severity”:”5", “alertgroup”:”YOUR_DESICION”, “alertkey”:”YOUR_MODULE_NAME”, “description”:”YOUR_LOG_AND_ALARM_DESCRIBTION”, “node”:”YOUR_NONE_NAME”, “department”:”MAIL_GROUP”, “occurrencedate”:”{{ctx.payload.time_triggered}}”, “tablename”:”YOUR_TABLE_NAME”}”””
}
}
},
“transform”: {
“script”: {
“source”: “return [ ‘time_triggered’: Instant.ofEpochMilli(ctx.trigger.triggered_time.getMillis()).atZone(ZoneId.of(‘Europe/Moscow’)).format(DateTimeFormatter.ofPattern(‘YYYY-MM-dd HH:mm:ss’)) ]”,
“lang”: “painless”
}
}
}

Simulate bölümünden oluşturduğunuz alarm manuel olarak tetikleyebilir ve alarm sonuçunu görüntüleyebilirsiniz.

simulate results

SIMULATE WATCH

Simüle sekmesi, saatin bölümlerini geçersiz kılmanıza ve ardından bir simülasyon çalıştırmanıza olanak tanır. Geçersiz kılmalarla ilgili şu uygulama ayrıntılarının farkında olun:

Tetik geçersiz kılma işlemleri tarih matematiğini kullanır.
Giriş geçersiz kılmaları, bir JSON bloğunu kabul eder.
Koşul geçersiz kılmaları, koşulu her zaman doğru olmaya zorlamak isteyip istemediğinizi belirtir.
Eylem geçersiz kılmaları birden çok seçeneği destekler.

Simülasyonu başlattıktan sonra bir sonuç ekranı göreceksiniz. Yanıttaki alanlar hakkında daha fazla bilgi için Execute watch API’sine bakın.

Simulate watch result

ADD ACTION TOOL’S:

Artık koşul ayarlandığına göre, bir eylem eklemelisiniz. Eylem, izleme koşulu karşılandığında tetiklenir. Eylemlerin tam listesi ve bunların nasıl yapılandırılacağı için bkz. Eylemlere koşul ekleme.

Bu örnekte, bir e-posta eylemi yapılandıracaksınız. Bu örneğin çalışması için Elasticsearch’te yapılandırılmış bir e-posta hesabınız olmalıdır.

  • Eylem ekle’yi tıklayın ve E-posta’yı seçin.
  • E-posta adresi alanına, koşul karşılandığında mesajı göndermek istediğiniz
  • Bir veya daha fazla e-posta adresi girin.
  • E-posta için bir konu ve gövde girin.
ACTİON TOOL’S
  • Saati kaydetmeden önce eylemi test etmek için Test e-postası gönder’e tıklayın.
  • Ayarladığınız yapılandırma kullanılarak örnek bir e-posta gönderilir.
  • Uyarı oluştur’u tıklayın.
  • Uyarı, izleme geçmişine ve durumuna inebileceğiniz İzleyiciye genel bakış sayfasında görünür.

Artık sizlerde basit bir adımla elastic üzerinde log mekanizmanızı alarm yapısına bağlayıp sistemlerde kritik açıkları anomali tespitleri ve sistem kesintelerini elastic üzerinden alarm mekanizmasına kolayca bağlayabilirsiniz.

Kaynaklar:

Uğur Duran
Bestcloudfor.me Cloud Native Engineer
#workfordreamseries

--

--