Logstash - Günlükleri Ayrıştırma

Logstash, giriş eklentilerini kullanarak günlükleri alır ve ardından verileri ayrıştırmak ve dönüştürmek için filtre eklentilerini kullanır. Günlüklerin ayrıştırılması ve dönüştürülmesi, çıktı hedefinde bulunan sistemlere göre gerçekleştirilir. Logstash, günlük verilerini ayrıştırır ve yalnızca gerekli alanları iletir. Daha sonra bu alanlar hedef sistemin uyumlu ve anlaşılır şekline dönüştürülür.

Günlükler Nasıl Ayrıştırılır?

Günlüklerin ayrıştırılması, GROK (Bilginin Grafik Temsili) kalıpları ve bunları Github'da bulabilirsiniz -

https://github.com/elastic/logstash/tree/v1.4.2/patterns.

Logstash, günlüklerin verilerini belirli bir GROK Örüntüsü veya apache günlükleri için yaygın olarak kullanılan "% {COMBINEDAPACHELOG}" gibi günlükleri ayrıştırmak için bir kalıp dizisi ile eşleştirir.

Ayrıştırılan veriler daha yapılandırılmıştır ve aranması ve sorguların gerçekleştirilmesi kolaydır. Logstash, giriş günlüklerinde belirtilen GROK modellerini arar ve eşleşen satırları günlüklerden çıkarır. GROK modellerinizi test etmek için GROK hata ayıklayıcıyı kullanabilirsiniz.

GROK deseninin sözdizimi% {SYNTAX: SEMANTIC} şeklindedir. Logstash GROK filtresi aşağıdaki biçimde yazılır -

%{PATTERN:FieldName}

Burada, PATTERN GROK modelini temsil eder ve alan adı, çıktıdaki ayrıştırılmış verileri temsil eden alanın adıdır.

Örneğin, çevrimiçi GROK hata ayıklayıcı kullanarak https://grokdebug.herokuapp.com/

Giriş

Bir günlükte örnek bir hata satırı -

[Wed Dec 07 21:54:54.048805 2016] [:error] [pid 1234:tid 3456829102]
   [client 192.168.1.1:25007] JSP Notice:  Undefined index: abc in
   /home/manu/tpworks/tutorialspoint.com/index.jsp on line 11

GROK Desen Sırası

Bu GROK model dizisi, bir zaman damgasını izleyen Günlük Seviyesi, İşlem Kimliği, İşlem Kimliği ve bir Hata Mesajından oluşan günlük olayıyla eşleşir.

\[(%{DAY:day} %{MONTH:month} %{MONTHDAY} %{TIME} %{YEAR})\] \[.*:%{LOGLEVEL:loglevel}\]
   \[pid %{NUMBER:pid}:tid %{NUMBER:tid}\] \[client %{IP:clientip}:.*\]
   %{GREEDYDATA:errormsg}

çıktı

Çıktı JSON biçimindedir.

{
   "day": [
      "Wed"
   ],
   "month": [
      "Dec"
   ],
   "loglevel": [
      "error"
   ],
   "pid": [
      "1234"
   ],
   "tid": [
      "3456829102"
   ],
   "clientip": [
      "192.168.1.1"
   ],
   "errormsg": [
      "JSP Notice:  Undefined index: abc in
      /home/manu/tpworks/tutorialspoint.com/index.jsp on line 11"
   ]
}