2017-03-28 1 views
0

J'expérimente avec ELK. Je tente de me connecter d'entrée avec le motif suivant pour logstashFiltre Grok pour mon modèle de journal

14:25:43.324 [http-nio-9090-exec-116] INFO com.app.MainApp - Request has been detected 

J'ai essayé les modèles de Grok suivants comme un filtre dans logstash.conf

match => { “message” => [ “ (?<timestamp>%{HOUR}:%{MINUTE}:%{SECOND}) \[%{NOTSPACE:thread}\] %{LOGLEVEL:loglevel} %{DATA:Class}\- %{GREEDYDATA:message}“ ]} 

match => { “message” => [ “ %{TIME:timestamp} \[%{NOTSPACE:thread}\] %{LOGLEVEL:loglevel} %{DATA:Class}\- %{GREEDYDATA:message}“ ]} 

Mais quand je journal d'entrée logstash, je reçois le erreur suivante

[0] "_grokparsefailure" 

Est-ce que quelqu'un peut suggérer le filtre de grok correct pour le modèle de notation ci-dessus?

+0

Votre premier caractère dans votre motif est un espace. Est-ce que c'est prévu? – Fairy

+0

@Fairy Non ce n'est pas –

+1

Eh bien alors là vous avez votre problème. Se débarrasser de l'espace correspondra à la fois à vos deux modèles correctement. – Fairy

Répondre

0

Cette erreur d'analyse a été corrigée après la suppression de l'espace de démarrage. Donc le logstash.conf de travail après avoir enlevé l'espace est comme ci-dessous

input { 
    file { 
    path => ["./debug.log"] 
    codec => multiline { 
     # Grok pattern names are valid! :) 
     pattern => "^%{TIMESTAMP_ISO8601} " 
     negate => true 
     what => previous 
    } 
    } 
} 

filter { 
    grok { 
    match => [ "message", "%{TIMESTAMP_ISO8601:timestamp} \[%{NOTSPACE:uid}\] \[%{NOTSPACE:thread}\] %{LOGLEVEL:loglevel} %{DATA:class}\-%{GREEDYDATA:message}" ] 
    overwrite => [ "message" ] 
    } 
    date { 
    match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss" ] 
    } 
} 


output { 
    elasticsearch { hosts => localhost } 
    stdout { codec => rubydebug } 
}