11/10/2021

Graylog Proje -4

Graylog kullanımı

Öncelikle mantıksal yapıyı inceleyelim.

Load-balancerdan gelen loglar round-robin olarak her bir graylog servera gönderilir. Burada Graylog Inputs ile alınır ve “Stream-Rules” ile çeşitli streamlere ayrılır. Örneğin error logs, normal-logs, login logs …etc.

Bunlar daha sonra saklanmak üzere Elastic search indexlerine gönderilir. Indexler verinin nasıl ne kadar saklanacağına karar verirler.

MongoDB ile graylog ta yapılan tüm ayarlar saklanır. Bunlar alarmlar, sidecar ayarları,dashboardlar , arama kayıtları gibidir.

Şimdi graylog bölümlerini inceleyelim.

Inputs

Graylogun hangi portu nasıl dinleyeceğine karar verdiği yerdir. Tüm loglar bu inputslardan içeri akar.

nxloglardan loglar GELF (graylog Extended Log Format) olarak gelir.

Seçenek olarak global seçiyoruz çünkü bizde cluster kurulumu yaptık. Inputs u ayarlar ayarlamaz logların akışını görmemiz gerekiyor.

Streams ve Stream Rules

Streamler gelen logların amaçlarına göre ayrılmasını sağlar. Streamlerı oluşturmadan önce indexleri oluşturmamız lazım çünkü gelen streamlerin akışları bir index içine olmalıdır.

  1. Index adı
  2. Elastic search için sadece standard analyzer mevcut.
  3. Mantıksal shard sayısı böylece her her bir elasticsearch nodu bağımsz çalışabilir.
  4. Kaç kopya ile redundancy oluşturmak istiyoruz.
  5. bu kadar segment sonunda yeni bir segment oluşturulur ve eskiler birleştirilir.
  6. Segment oluşturmanın ne sıklıkla yapılacağıdır.
  7. Oluşturulan indexlerin rotasyon stratejisi ne olacaktır.
  8. Message Count yapıldıysa kaç message da bir yeni segment oluşturulacaktır.
  9. Kaç index segmenti tutulacaktır.

Indeximizi oluşturduktan sonra artık stream i oluşturabiliriz.

Bunun için inputta akan loglardan uygun olanı seçip sağ tıklayıp rule oluştur diyerek onu artık farklı bir streame alacak kuralları seçenelerden seçip oluşturacağız.

Log Parçalama

Daha önce bahsettiğimiz gibi loglar bize GELF formatında geliyordu. Herbir log parçası bir database attribute i gibi parçalanabilir.

Bununiçin ya graylogun kendi parçalamasını kabul edeceğiz yada GROK adı verilen bir çeşit RegEx uygulaması olan bir yapıyı kullanacağız. GROK Kullanımı kendi başına ayrı bir konudur burada değinmeyeceğim.

Sadece bir örnek ile göstereyim :

%{IPORHOST:clientip} - - \[%{HTTPDATE:timestamp;date;dd/MMM/yyyy:HH:mm:ss
Z}\] "%{HTTP_Verbs} %{URIPATHPARAM:Link_Parameters}
HTTP/%{NUMBER:httpversion}" %{HTTP_Codes:http_code} %{BASE10NUM}
"%{URI}" %{QUOTEDSTRING:browser}

geriye dashboard oluşturma ve sorgulamalar kalıyorki bunlar zaten kendi içinde açıklamalı ihtiyaca göre şekillenen uygulama bölümleridir.

Leave a Reply