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