2017-10-18 16 views
0

J'ai une configuration simple et simple et je ne sais pas ce que je fais mal essayer d'obtenir ce travail multiligne.logstash-5.x codec multiligne d'entrée FAES ne fonctionne pas

input { 
    gelf { 
     codec => multiline { 
      pattern => "^%{TIMESTAMP_ISO8601} " 
      negate => true 
      what => "previous" 
     } 
    } 
} 

filter {} 

output { 
    # I have the relevant ES hosts & index here 
    elasticsearch { } 
    stdout { 
     codec => rubydebug 
    } 
} 

Et je teste comme ci-dessous et je reçois des lignes simples, étiquette multiligne ne soit pas ajouté, et je le vois dans les journaux de débogage logstash que les événements vont à travers le filtre, un par un.

docker run -it --log-driver gelf --log-opt gelf-address=udp://127.0.0.1:12201 \ 
    --log-opt tag=mline-test python:alpine \ 
    python -c 'print("[2017-10-18 00:00:00,000] Hello world");assert False' 
  • J'ai testé cela avec les deux versions logstash 5.5.2 & 5.6.3 => ElasticSearch 5.5
  • Je logstash-codec-multiligne installé
  • Je sais que je peux le faire avec le (maintenant supprimé) filtre multiligne dans logstash 2,4

Répondre

0

J'ai découvert que les codecs sont ignorés dans le plugin d'entrée FAES: logstash-plugins/logstash-input-gelf#37

Cela signifie que la seule option multiligne avec FAES utilise logstash-2.4 et prendre le coup de performance unique fil.

Settings: Default pipeline workers: 4 
Defaulting pipeline worker threads to 1 because there are some filters that might not work with multiple worker threads {:count_was=>4, :filters=>["multiline"], :level=>:warn} 
Pipeline main started