2017-08-31 1 views
0

J'ai ELK 5.5.1 en cours d'exécution dans un conteneur Docker, et il analysera la plupart de mes journaux, à l'exception de ceux qui proviennent de mon application Spring. Kinda à court d'idées. Je l'ai tracé jusqu'au pipeline logstash-> elasticsearch. Filebeat fait son travail, et Logstash est la réception des journaux de l'application en question, basée sur le journal stdout de tailash tailing.Instance ELK Docker non coopérative

J'ai effacé le volume de docker qui stocke mes données ELK propres, et a commencé à neuf avec filebeat juste en renvoyant les journaux en question.

Prenez une ligne de journal comme celui-ci:

FINEST|8384/0|Service tsoft_spring|17-08-31 14:12:01|2017-08-31 14:12:01.260 INFO 8384 --- [ taskExecutor-2] c.t.s.c.s.a.ConfirmationService   : Will not persist empty response notes 

Utilisation d'une configuration logstash très minime, il finirai par être persistaient à ElasticSearch:

input { 
    beats { 
     port => 5044 
     ssl => false 
    } 
    } 
    filter { 
    if [message] =~ /tsoft_spring/ { 
     grok { 
     match => [ "message", "%{GREEDYDATA:logmessage}" ] 
     } 
    } 
    } 
    output { 
    stdout { } 
    elasticsearch { hosts => ["localhost:9200"] } 
    } 

En utilisant une configuration plus complète, le journal est juste ignoré par élastique, pas de faute de retard, pas de dateparsefailure:

input { 
    beats { 
     port => 5044 
     ssl => false 
    } 
    } 
    filter { 
    if [message] =~ /tsoft_spring/ { 
     grok { 
     match => [ "message", "%{WORD}\|%{NUMBER}/%{NUMBER}\|%{WORD}%{SPACE}%{WORD}\|%{TIMESTAMP_ISO8601:timestamp}\|%{TIMESTAMP_ISO8601}%{SPACE}%{LOGLEVEL:loglevel}%{SPACE}%{NUMBER:pid}%{SPACE}---%{SPACE}%{SYSLOG5424SD:threadname}%{SPACE}%{JAVACLASS:classname}%{SPACE}:%{SPACE}%{GREEDYDATA:logmessage}" ] 
     } 
     date { 
     match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss" ] 
     } 
    } 
    } 
    output { 
    stdout { } 
    elasticsearch { hosts => ["localhost:9200"] } 
    } 

J'ai vérifié que ce modèle va analyser cette ligne, en utilisant http://grokconstructor.appspot.com/do/match#result, et j'aurais juré que cela fonctionnait le week-end dernier, mais pourrait être mon imagination.

Répondre

1

Peut-être que le problème ici n'est pas dans votre filtre grok, mais dans la correspondance de date. L'année suivante est 0017, au lieu de 2017. C'est peut-être pourquoi vous ne trouvez pas l'événement dans ES? Pouvez-vous essayer ceci:

date { 
    match => [ "timestamp" , "yy-MM-dd HH:mm:ss" ] 
} 
+1

fils d'une arme à feu ... Je ne peux pas le croire. J'ai déjà vu dateparsefailure dans ce cas. Je ne peux pas le croire - merci beaucoup! – JonasJSchreiber