2017-10-18 133 views
0

我有一个简单而直接的配置,我不知道我在做什么错误试图让这个多行工作。logstash-5.x gelf输入多行编解码器不起作用

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 
    } 
} 

而且我如下测试它,我得到的单线条,多标签没有得到补充,我看到它在logstash调试日志的事件由一个经过过滤器之一。

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' 
  • 我既logstash版本测试了这个5.5.2 & 5.6.3 => elasticsearch 5.5
  • 我已经安装logstash编解码器,多
  • 我知道,我可以用做(现在删除)多滤波器logstash 2.4

回答

0

我发现了编解码器中输入GELF忽略插件:logstash-plugins/logstash-input-gelf#37

这意味着带gelf的唯一多行选项是使用logstash-2.4并使单线程性能命中。

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