Logstash - İç Mimari

Bu bölümde, Logstash'ın dahili mimarisi ve farklı bileşenleri hakkında tartışacağız.

Logstash Hizmet Mimarisi

Logstash, farklı sunuculardan ve veri kaynaklarından gelen günlükleri işler ve gönderici olarak davranır. Göndericiler, günlükleri toplamak için kullanılır ve bunlar her giriş kaynağına yüklenir. Komisyoncular gibiRedis, Kafka veya RabbitMQ Dizin oluşturucular için verileri tutan arabellekler varsa, örnekler üzerinde başarısız olduğu için birden fazla aracı olabilir.

İndeksleyiciler gibi Lucenedaha iyi arama performansı için günlükleri indekslemek için kullanılır ve daha sonra çıktı Elasticsearch veya diğer çıktı hedefinde saklanır. Çıktı depolamasındaki veriler, Kibana ve diğer görselleştirme yazılımları için mevcuttur.

Logstash İç Mimarisi

Logstash ardışık düzeni üç bileşenden oluşur Input, Filters ve Output. Giriş bölümü, giriş veri kaynağını belirtmek ve erişim sağlamaktan sorumludur.Apache Tomcat Server.

Logstash Ardışık Düzenini Açıklama Örneği

Logstash yapılandırma dosyası, Logstash'ın üç bileşeni hakkında ayrıntıları içerir. Bu durumda, adında bir dosya adı oluşturuyoruzLogstash.conf.

Aşağıdaki yapılandırma, "inlog.log" giriş günlüğünden verileri yakalar ve bunları herhangi bir filtre olmadan bir çıkış günlüğüne "outlog.log" yazar.

Logstash.conf

Logstash yapılandırma dosyası yalnızca verileri inlog.log giriş eklentisini kullanarak dosya ve günlük verilerini outlog.log çıktı eklentisini kullanarak dosya.

input {
   file {
      path => "C:/tpwork/logstash/bin/log/inlog.log"
   }
}
output {
   file {
      path => "C:/tpwork/logstash/bin/log/outlog.log"
   }
}

Logstash'ı çalıştırın

Logstash kullanır –f yapılandırma dosyasını belirtme seçeneği.

C:\logstash\bin> logstash –f logstash.conf

inlog.log

Aşağıdaki kod bloğu giriş günlük verilerini gösterir.

Hello tutorialspoint.com

outlog.log

Logstash çıkışı, mesaj alanındaki giriş verilerini içerir. Logstash ayrıca çıktıya Zaman Damgası, Giriş Kaynağının Yolu, Sürüm, Ana Bilgisayar ve Etiketler gibi başka alanlar da ekler.

{
   "path":"C:/tpwork/logstash/bin/log/inlog1.log",
   "@timestamp":"2016-12-13T02:28:38.763Z",
   "@version":"1", "host":"Dell-PC",
   "message":" Hello tutorialspoint.com", "tags":[]
}

Yapabildiğiniz gibi, Logstash'ın çıktısı, giriş günlüğü aracılığıyla sağlanan verilerden daha fazlasını içerir. Çıktı, hatalar gibi fazladan mesajları temsil etmek için kullanılan Kaynak Yolu, Zaman Damgası, Sürüm, Ana Bilgisayar Adı ve Etiketi içerir.

Verileri işlemek ve ihtiyaçlarımız için yararlı hale getirmek için filtreler kullanabiliriz. Bir sonraki örnekte, verileri almak için filtre kullanıyoruz, bu da çıktıyı yalnızca GET veya POST gibi bir fiil ve ardından birUnique Resource Identifier.

Logstash.conf

Bu Logstash yapılandırmasına, adında bir filtre ekliyoruz. grokgiriş verilerini filtrelemek için. Model sıralaması giriş günlüğüyle eşleşen girdi günlüğü olayı, yalnızca hatalı çıktı hedefine ulaşır. Logstash, grok filtre desen dizisiyle eşleşmeyen çıktı olaylarına "_grokparsefailure" adlı bir etiket ekler.

Logstash, Apache gibi popüler sunucu günlüklerini ayrıştırmak için birçok dahili normal ifade kalıbı sunar. Burada kullanılan kalıp, get, post vb. Gibi bir fiil ve ardından tek tip bir kaynak tanımlayıcı beklemektedir.

input {
   file {
      path => "C:/tpwork/logstash/bin/log/inlog2.log"
   }
}
filter {
   grok {
      match => {"message" => "%{WORD:verb} %{URIPATHPARAM:uri}"}
   }
}
output {
   file {
      path => "C:/tpwork/logstash/bin/log/outlog2.log"
   }
}

Logstash'ı çalıştırın

Aşağıdaki komutu kullanarak Logstash'ı çalıştırabiliriz.

C:\logstash\bin> logstash –f  Logstash.conf

inlog2.log

Girdi dosyamız, varsayılan sınırlayıcı ile ayrılmış iki olay içerir, yani yeni satır sınırlayıcı. İlk olay GROk'da belirtilen modelle eşleşirken ikincisi uyuşmuyor.

GET /tutorialspoint/Logstash
Input 1234

outlog2.log

İkinci çıktı olayının "_grokparsefailure" etiketi içerdiğini görebiliriz, çünkü bu, grok filtre kalıbıyla eşleşmez. Kullanıcı ayrıca bu eşleşmeyen olayları çıktıdan,‘if’ çıktı eklentisindeki durum.

{
   "path":"C:/tpwork/logstash/bin/log/inlog2.log",
   "@timestamp":"2016-12-13T02:47:10.352Z","@version":"1","host":"Dell-PC","verb":"GET",
   "message":"GET /tutorialspoint/logstash", "uri":"/tutorialspoint/logstash", "tags":[]
}
{
   "path":"C:/tpwork/logstash/bin/log/inlog2.log",
   "@timestamp":"2016-12-13T02:48:12.418Z", "@version":"1", "host":"Dell-PC",
   "message":"t 1234\r", "tags":["_grokparsefailure"]
}