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:indecode'", "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编解码器不能正常工作。