Logstash - Analisando os registros

O Logstash recebe os logs usando plug-ins de entrada e, em seguida, usa os plug-ins de filtro para analisar e transformar os dados. A análise e transformação dos logs são realizadas de acordo com os sistemas presentes no destino de saída. O Logstash analisa os dados de registro e encaminha apenas os campos obrigatórios. Posteriormente, esses campos são transformados na forma compatível e compreensível do sistema de destino.

Como analisar os logs?

A análise dos registros é realizada usando o GROK (Representação gráfica do conhecimento) padrões e você pode encontrá-los no Github -

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

O Logstash corresponde aos dados dos logs com um padrão GROK especificado ou uma sequência de padrão para analisar os logs como "% {COMBINEDAPACHELOG}", que é comumente usado para logs do Apache.

Os dados analisados ​​são mais estruturados e fáceis de pesquisar e realizar consultas. O Logstash procura os padrões GROK especificados nos logs de entrada e extrai as linhas correspondentes dos logs. Você pode usar o depurador GROK para testar seus padrões GROK.

A sintaxe para um padrão GROK é% {SYNTAX: SEMANTIC}. O filtro Logstash GROK é escrito da seguinte forma -

%{PATTERN:FieldName}

Aqui, PATTERN representa o padrão GROK e fieldname é o nome do campo, que representa os dados analisados ​​na saída.

Por exemplo, usando o depurador GROK online https://grokdebug.herokuapp.com/

Entrada

Um exemplo de linha de erro em um log -

[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

Sequência de padrão GROK

Esta sequência padrão GROK corresponde ao evento de log, que consiste em um carimbo de data / hora seguido por Nível de log, Id de processo, Id de transação e uma mensagem de erro.

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

resultado

A saída está no formato JSON.

{
   "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"
   ]
}