28 Temmuz 2016 Perşembe

ElastAlert Kural Tipleri

*Kural örnek yapılandırma dosyasında ilgili yerlerde değişiklik yapıp, eklenmesi gerekenler eklenmiştir. 

Any ( Verilen herhangi bir filtreleme ile eşleştiğinde alert oluşur. )

name: log_any
type: any
..
filter:
  - query:
      query_string:
          query: "version:1"

version alanı 1 olan tüm sorgular için alert oluşturur.

Frequency( Belli bir zaman diliminde olayların en az belli bir sayıda eşleşme olduğunda alert oluşur.)

name: log_error
type: frequency
num_events: 1
timeframe:
  minutes: 1
filter:
  - query:
      query_string:
          query: "level:ERROR"

Eğer bir dakikada log seviyesi Error olan bir log varsa alert oluşturur. 

Flatline ( Belli bir zamanda eşleşen sorgu sayısının verilen eşik değerinden az olmasıyla alert oluşturur. )

  name: log_flatline
  type: flatline
  threshold: 5 // ‘den fazla olunca eşleşmiyor. 
  timeframe: 
        minute: 1
 filter:
    - query:
      query_string:
                query: "version:1"

version değeri 1 olan sorgular 1 dakikadan  5 den az ise alert oluşturur.

Blaclist ( liste’de var ise alert oluşturur. )

name: log_blacklist
type: blacklist //içerirse eşleşir.
blacklist:
“message” //aranacak kelime
compare_key: message //aranacak yer


Eğer message kelimesi logların message alanında geçiyorsa alert oluşturur.

Whitelist ( Verilen değer listedeki alanla eşleşmiyorsa alert oluşturur.  )

name: log_whitelist 
type: whitelist 
whitelist:
“infoowl” //liste bunu içermiyorsa eşleşir
compare_key: message
ignore_null: True olduğunda compare_key olanı olmadan eşleşme yapmıyor

Eğer infoowl kelimesi logların message alanında geçmiyorsa alert oluşturur.

Cardinality ( Belli bir zamanda belirli alandaki benzersiz değerlerin sayısı verilen eşik değerinden düşükse alert oluşturur. )

name: log_cardinality
type: cardinality 
cardinality_field: “host”
min_cardinality: 5 

timeframe:
      minutes: 1


loglardaki host alanında oluşan benzersiz değerler bir dakikada 5’den düşükse alert oluşturur.

Change ( Bir alan bir süre içerisinde iki farklı değere sahip olduğunda alert oluşturulur. )

name: log_change
type: change 
compare_key: message    //değişikliğin kontrol edileceği alan
ignore_null: True olduğunda compare_key olanı olmadan eşleşme yapmıyor
query_key: host  (kontrol edilmiş olayların hepsinde bu alan olmalı)

timeframe:
  minutes: 1

1 dakika da Host alanı olan ve message alanında değişiklik olduğunda alert oluşturuyor.

Örnekler

Örnek 1
Alerti thread_name alanında değişiklik olursa

name: log_error
type: change
index: logstash-*
compare_key: thread_name
ignore_null: True
query_key: host

Çıktıda hem yeni hem eski değerini çıktı olarak vermektedir:

level: ERROR
level_value: 40000
logger_name: com.example.DemoApplication$$EnhancerBySpringCGLIB$$2bec2634
message: New Error
new_value: http-nio-8080-exec-6
old_value: http-nio-8080-exec-5
thread_name: http-nio-8080-exec-6
type: syslog

Örnek 2
Mesaj kısmında Yıldız geçip ay geçmeyen loglar

type: blacklist
blacklist:  
   - "Yıldız"
compare_key: message

filter:
  - not:
      term:
         message: "ay"

Örnek 3
Mesajda a ve b olup c ve d olmaması. Eğer terms: message: [“a”,”b”] yazarsak sadece a ya da b olduğunda da eşleşme oluyor.

type: frequency
filter:
   - term:
       message: "a"
   - and:
      - term:
          message: "b"
   - and:
     - not:
        terms:
          message: ["c","d"]

Hiç yorum yok:

Yorum Gönder