Logstash - Analyse des journaux

Logstash reçoit les journaux à l'aide de plug-ins d'entrée, puis utilise les plug-ins de filtre pour analyser et transformer les données. L'analyse et la transformation des journaux sont effectuées en fonction des systèmes présents dans la destination de sortie. Logstash analyse les données de journalisation et transmet uniquement les champs obligatoires. Plus tard, ces champs sont transformés en la forme compatible et compréhensible du système de destination.

Comment analyser les journaux?

L'analyse des journaux est effectuée en utilisant le GROK (Représentation graphique des connaissances) et vous pouvez les trouver dans Github -

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

Logstash fait correspondre les données des journaux avec un modèle GROK spécifié ou une séquence de modèles pour analyser les journaux comme "% {COMBINEDAPACHELOG}", qui est couramment utilisé pour les journaux Apache.

Les données analysées sont plus structurées et faciles à rechercher et à effectuer des requêtes. Logstash recherche les modèles GROK spécifiés dans les journaux d'entrée et extrait les lignes correspondantes des journaux. Vous pouvez utiliser le débogueur GROK pour tester vos modèles GROK.

La syntaxe d'un modèle GROK est% {SYNTAX: SEMANTIC}. Le filtre Logstash GROK est écrit sous la forme suivante -

%{PATTERN:FieldName}

Ici, PATTERN représente le modèle GROK et le nom de champ est le nom du champ, qui représente les données analysées dans la sortie.

Par exemple, en utilisant le débogueur GROK en ligne https://grokdebug.herokuapp.com/

Contribution

Un exemple de ligne d'erreur dans un journal -

[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

Séquence de motifs GROK

Cette séquence de modèles GROK correspond à l'événement du journal, qui comprend un horodatage suivi du niveau du journal, de l'ID de processus, de l'ID de transaction et d'un message d'erreur.

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

production

La sortie est au format 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"
   ]
}