2017-01-26 3 views
0

Je suis nouveau à logstash dans la pile ELK. Un fichier journal comporte différents processus qui y enregistrent des données. Chaque processus écrit des journaux avec des modèles différents. Je veux analyser ce fichier journal. Chaque journal dans ce fichier journal est démarré avec le modèle ci-dessous de grok,Analyse du fichier journal avec les journaux de différents modèles Logstash

% {SYSLOGTIMESTAMP: horodatage}% {SYSLOGHOST: LogSource}% {SYSLOGPROG}: + % {SRCFILE: srcfile}:% {NUMÉRO: linenumber } où SRCFILE est défini comme [a-zA-Z0-9 ._-] +

S'il vous plaît laissez-moi savoir comment puis-je analyser ce fichier afin que différents types de journaux de chaque enregistrement de processus dans ce fichier, vous pouvez être analysé.

Répondre

1

Étant donné que vous essayez de transmettre les fichiers journaux , vous devrez peut-être utiliser le plugin d'entrée file pour récupérer un fichier ou un nombre x de fichiers d'un chemin donné. Ainsi, un input de base pourrait ressembler à quelque chose comme ceci:

input { 

     file { 
      path => "/your/path/*" 
      exclude => "*.gz" 
      start_position => "beginning" 
      ignore_older => 0 
      sincedb_path => "/dev/null" 
     } 
} 

Ce qui précède est juste un échantillon pour vous reproduire. Ainsi, une fois que vous avez les fichiers et que vous commencez à les traiter ligne par ligne, vous pouvez utiliser le filtre grok afin de faire correspondre les mots-clés de votre fichier journal. Un filtre à échantillon pourrait ressembler à ceci:

grok { 
    patterns_dir => ["/pathto/patterns"] 
    match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:logsource} %{SYSLOGPROG}: + %{SRCFILE:srcfile}:%{NUMBER:linenumber} where SRCFILE is defined as [a-zA-Z0-9._-]+" }   
} 

Vous pourriez avoir à utiliser différents filtres si vous avez des différents types de journaux imprimés dans un seul fichier OU vous pourriez avoir dans la même ligne avec un , valeurs séparées par des virgules. Quelque chose comme:

grok { 
     match => { "message" => [ 
       "TYPE1,%{WORD:a1},%{WORD:a2},%{WORD:a3},%{POSINT:a4}", 
       "TYPE2,%{WORD:b1},%{WORD:b2},%{WORD:b3},%{WORD:b4}", 
       "TYPE3,%{POSINT:c1},%{WORD:c2},%{POSINT:c3},%{WORD:c4}" ] 
     } 
    } 

Et alors peut-être vous pourriez jouer avec le message, puisque vous avez toutes les valeurs que vous aviez besoin juste à l'intérieur. J'espère que cela aide!