LogStash necə çalışır?

Logstash

Artıq logstash təməllərini öğrəndiyimizə görə, necə çalışdığı haqqında biraz daha detallı danışaq.

İlk öncə sizlərə execution modeli ve lock stage addımının gələn log və ya requestləri necə prosesi etdiyini göstərmək istəyirəm.

Nəzərə alaq ki baş verən requestləri(events) izləyən 2 input-dan(A, B) ibarət bucür bir mapping-imiz var.

Logstash workflow işləyişi

Hər bir giriş(input) bir-birini bloklamamaq üçün özünə məxsus thread yaradır, bu o deməkdir ki, eyni anda daxil olan iki input varsa, onlar eyni vaxtda proses olunacaqlar.

İnput-lar daxil olduqdan sonra onlar üçün əvvəlcədən hazırlanmış konfiqurasiyaya uygun olaraq set olunmuş Codec formatına çevirilirlər. 

Daha sonra İnput-lar daxil olunur və verilmiş Codec formatına çevrildikten sonra “Work queue”-da saxlanılır daha sonra “maximum batch size”  və ya “wait before processing” konfiquarsiyasına uyğun şəkildə data worker-lara ötürülür bu o deməkdir ki, “maximum batch size”  üçün 50 və “wait before processing” 100 millisaniyə set olunubsa bu zaman event-lər queue-da ya 50 olduğu zaman ya da 100 millisaniyə gözlədikdən sonra worker-lara ötürüləcək bu 2 parameter event-lerin queue-da çox gözləməsi üçün istifadə olunur.

Ən sonda artıq output hazırlanır hansı ki əvvəlcədən hazırlanmış konfiqurasiyada qeyd olunmuş filterlər tətbiq edilir və output codec-ə uygun olaraq hazırlanır.

Nümunə kimi hazırlanmış sadə bir input/output konfiqurasiya faylı göstərirəm ki yuxarıda qeyd olunanlar daha aydın görünsün.

Input {

stdin {

codec => json

}

http {

host => “127.0.0.1”

port => 8080

}

}

Filter {

mutate {

remove_field => [ “host” ]

}

}

Output {

stdout {

codec => rubydebug

}

file {

path => “output.txt”

}

}

Bu nümunədə biz input olaraq json codec formatında http plugini istifadə edərək web server-dən gələn datanı götürüp daha sonra filter hissədə həmin input-dan host datasını silirik və output olaraq rubydebug Codec formatında datanı output.txt falına yazırıq.