Logstash与stream畅的input编解码器不工作

我已经使用gest已经logstash,并希望检查stream畅的input(主要是由于基于TCP的docker日志驱动程序的stream畅,而不是唯一的UDP的gelf)。 我的testingconfiguration是这样的:

input { gelf { port => 12345 } tcp { codec => fluent port => 23456 } } filter { } output { stdout { codec => rubydebug { metadata => true } } } 

我可以使用以下方式发送gelf日志

 docker run -it \ --log-driver gelf \ --log-opt gelf-address=udp://localhost:12345 \ --log-opt tag=gelf-test \ ubuntu:16.04 /bin/bash -c 'echo $(date -u +"%Y-%m-%dT%H:%M:%SZ") Hello gelf' 

stream利的版本不起作用

 docker run -it \ --log-driver fluentd \ --log-opt fluentd-address=localhost:23456 \ --log-opt tag=fluent-test \ ubuntu:16.04 /bin/bash -c 'echo $(date -u +"%Y-%m-%dT%H:%M:%SZ") Hello fluent' 

我可以validationlogstash正在接收input:

 echo 'Hello TCP' | nc localhost 23456 

发生错误。 closures连接{:client =>“172.17.0.1:42012”,:exception =>#,:backtrace => [“org / jruby / RubyTime.java:1073:in'',”/ at'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-event-2.4.0-java/lib/logstash/timestamp.rb:32:in '“,” at'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-event-2.4.0-java/lib/logstash/timestamp.rb:32:in /logstash-codec-fluent-2.0.4-java/lib/logstash/codecs/fluent.rb:41:in decode'", "org/msgpack/jruby/MessagePackLibrary.java:195:in每一个'“,”/ opt / logstash / vendor / bundle / jruby / 1.9 / gems / logstash -codec-fluent-2.0.4 -java / lib / logstash /codecs/fluent.rb:40: decode'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-tcp-3.0.6/lib/logstash/inputs/tcp.rb:153:in handle_socket'“,”/opt/logstash/vendor/bundle/jruby/1.9/ gems / logstash -input-tcp-3.0.6 / lib / logstash / inputs / tcp.rb:143:在`server_connection_thread'“],:level =>:error}

我也禁用了stream利的编解码器 ,并在那里发送了stream畅的日志和正确的logstash错误,并按照预期将stream利的msgpackparsing为常规TCP事件的message字段。

收到一个事件,该事件的字符编码与您configuration的不同。 {:text =>“\ x94 \ xABfluent-test \ xD2X \ log \ xD9 \\”2017-03-10T12:58:17Z Hello fluent \ r \ xACcontainer_id \ xD9 @ 9cbd13eb83a02a1a4d4f83ff063d4e40b4419b7dcbcef960e4689495caa5c132 \ xAEcontainer_name \ xAF / ecstatic_kilby \ xA6source \ xA6stdout \ xC0“,:expected_charset =>”UTF-8“,:level =>:warn}

 { "message" => "\\x94\\xABfluent-test\\xD2X¢鄣log\\xD9\\\"2017-03-10T12:58:17Z Hello fluent\\r\\xACcontainer_id\\xD9@9cbd13eb83a02a1a4d4f83ff063d4e40b4419b7dcbcef960e4689495caa5c132\\xAEcontainer_name\\xAF/ecstatic_kilby\\xA6source\\xA6stdout\\xC0", "@version" => "1", "@timestamp" => "2017-03-10T12:58:18.069Z", "host" => "172.17.0.1", "port" => 42016 } 

我没有其他的想法,有没有人遇到这个问题,或有任何想法如何进一步debugging?

你可以尝试一个Fluentd实例吗?这样就可以更容易地确定问题出在哪里。 快速查看看起来像Logstash Fluent编解码器不能正常工作。