2016-06-03 1 views
0

Je trouve que logstash n'est pas un fan de mon filtre. Ce serait bien d'avoir une deuxième paire d'yeux dessus. Premier - mon fichier journal - a les entrées suivantes avec de nouvelles lignes pour chaque volume.Logstash Grok Filter - analyse du fichier personnalisé

/vol/vol0/ 298844160 6916836 291927324 2% /vol/vol0/ 

Mon fichier de configuration se présente comme suit:

ENTRÉE

file { 
    type => "testing" 
    path => "/opt/log_repo/ssh/netapp/*" 
    tags => "netapp" 
    start_position => "beginning" 
    sincedb_path => "/dev/null" 
} 

FILTRE

if [type] == "testing" { 
    grok{ 
     match => [ "@message", "{UNIXPATH:volume}%{SPACE}%{INT:total}%{SPACE}%{INT:used}%{SPACE}%{INT:avail}%{SPACE}%{PROG:cap}%{SPACE}%{UNIXPATH:vols}"] 
    } 
} 

SORTIE

if [type] == "testing" { 
    elasticsearch { 
     action => "index" 
     hosts => ["http://localhost:9200"] 
     index => ["testing4-%{+YYYY.MM.dd}"] 
    } 
} 

Quand je lance ceci, il me dit qu'il a un mauvais fichier de configuration. Si je change le filtre à:

match => [ "@message", "{UNIXPATH:volume}" ] 

Il crée un nouveau champ appelé volume avec le nom de volume. J'utilise le composant espace car le journal n'est tout simplement pas cohérent. Certains volumes auront 4 espaces entre l'espace utilisable et certains auront plus ou moins en fonction du nom du volume et de la taille.

Pour accéder à cette configuration i misé sur les sites suivants: https://grokdebug.herokuapp.com/discover?# http://grokconstructor.appspot.com/do/constructionstep

encore du mal sur ce que je suis absent .... Toute aide serait grandement appréciée.

MISE À JOUR: Après avoir ajouté la recommandation ci-dessous, il ne crée toujours pas de nouveau champ.

_index  string    
message  string    
type string    
tags string    
path string    
@timestamp  date     
@version string    
host string    
_source  _source    
_id  string    
_type string    
_score 

Répondre

1

Votre modèle ne matrch pas le journal de l'échantillon pour une raison très simple et stupide - il vous manque % au début de votre modèle. Si vous ajouterez alors il fonctionne comme un charme:

enter image description here

Ainsi, le filtre est plein:

if [type] == "testing" { 
    grok{ 
     match => [ "@message", "%{UNIXPATH:volume}%{SPACE}%{INT:total}%{SPACE}%{INT:used}%{SPACE}%{INT:avail}%{SPACE}%{PROG:cap}%{SPACE}%{UNIXPATH:vols}"] 
    } 
} 
+0

"@message" - Le symbole @ a été crée aussi des problèmes. Cela n'a pas posé de problème en supprimant le symbole @. – Jared

+0

@Jared oh, vous avez mis à jour la question? Astuce pour l'avenir - laisser un commentaire puis sur une réponse, je ne savais pas avant il ya 13 minutes. –

+0

mon mauvais. C'était aussi dû au fait que j'ai oublié le symbole% aussi. Donc, la combinaison du symbole @ et du% étaient les deux facteurs clés qui ont gonflé le filtre grok. Réparer ceux qui ont bien fonctionné. Merci. – Jared