Logstash: análisis de registros

Logstash recibe los registros usando complementos de entrada y luego usa los complementos de filtro para analizar y transformar los datos. El análisis y la transformación de los registros se realizan de acuerdo con los sistemas presentes en el destino de salida. Logstash analiza los datos de registro y reenvía solo los campos obligatorios. Posteriormente, estos campos se transforman en la forma compatible y comprensible del sistema de destino.

¿Cómo analizar los registros?

El análisis de los registros se realiza usando el GROK (Representación gráfica del conocimiento) y puede encontrarlos en Github:

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

Logstash hace coincidir los datos de los registros con un patrón GROK especificado o una secuencia de patrón para analizar los registros como "% {COMBINEDAPACHELOG}", que se usa comúnmente para los registros de Apache.

Los datos analizados son más estructurados y fáciles de buscar y para realizar consultas. Logstash busca los patrones de GROK especificados en los registros de entrada y extrae las líneas coincidentes de los registros. Puede usar el depurador de GROK para probar sus patrones de GROK.

La sintaxis de un patrón GROK es% {SYNTAX: SEMANTIC}. El filtro GROK de Logstash está escrito de la siguiente forma:

%{PATTERN:FieldName}

Aquí, PATTERN representa el patrón GROK y el nombre del campo es el nombre del campo, que representa los datos analizados en la salida.

Por ejemplo, usando el depurador GROK en línea https://grokdebug.herokuapp.com/

Entrada

Una línea de error de muestra en 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

Secuencia de patrones de GROK

Esta secuencia del patrón GROK coincide con el evento de registro, que consta de una marca de tiempo seguida de Nivel de registro, Id de proceso, Id de transacción y un Mensaje de error.

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

salida

La salida está en 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"
   ]
}