Logstash - Analisi dei log

Logstash riceve i log utilizzando plug-in di input e quindi utilizza i plug-in di filtro per analizzare e trasformare i dati. L'analisi e la trasformazione dei log vengono eseguite in base ai sistemi presenti nella destinazione di output. Logstash analizza i dati di registrazione e inoltra solo i campi obbligatori. Successivamente, questi campi vengono trasformati nella forma compatibile e comprensibile del sistema di destinazione.

Come analizzare i registri?

L'analisi dei log viene eseguita utilizzando il file GROK (Rappresentazione grafica della conoscenza) e puoi trovarli in Github -

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

Logstash abbina i dati dei log con un pattern GROK specificato o una sequenza di pattern per l'analisi dei log come "% {COMBINEDAPACHELOG}", comunemente usato per i log di Apache.

I dati analizzati sono più strutturati e facili da cercare e per eseguire query. Logstash cerca i pattern GROK specificati nei log di input ed estrae le righe corrispondenti dai log. Puoi utilizzare il debugger GROK per testare i tuoi pattern GROK.

La sintassi per un pattern GROK è% {SYNTAX: SEMANTIC}. Il filtro Logstash GROK è scritto nella seguente forma:

%{PATTERN:FieldName}

Qui, PATTERN rappresenta il pattern GROK e il fieldname è il nome del campo, che rappresenta i dati analizzati nell'output.

Ad esempio, utilizzando il debugger GROK online https://grokdebug.herokuapp.com/

Ingresso

Una riga di errore di esempio in un registro -

[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

Sequenza di pattern GROK

Questa sequenza di pattern GROK corrisponde all'evento di registro, che comprende un timestamp seguito da Livello di registro, ID processo, ID transazione e un messaggio di errore.

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

produzione

L'output è in 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"
   ]
}