2017-03-10 5 views
0

gelf와 함께 logstash를 이미 사용하고 있으며 유창한 입력을 확인하고 싶습니다 (주로 UDP 기반 gelf가 아닌 유창한 TCP 기반 도커 로그 드라이버 때문). 테스트를 위해 내 구성은 이것이다 :유창한 입력 코덱이 작동하지 않는 Logstash

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' 

그러나 유창 버전 작동하지 않습니다

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' 

내가 확인할 수 있습니다 logstash가 입력을 받고 있습니다 :

echo 'Hello TCP' | nc localhost 23456 

오류가 발생했습니다. 연결 닫기 {: client => "172.17.0.1:42012", : 예외 => #, : backtrace => [ "org/jruby/RubyTime.java : 1073 : at'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-event-2.4.0-java/lib/logstash/timestamp.rb:32:in에서" ","/ opt/logstash/vendor /bundle/jruby/1.9/gems/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:in 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:in server_connection_thread '' '] : 레벨 => 오류}

는 또한 는 유동성 코덱을 사용할 그리고 유창한 로그를 보내고 logstash는 적절하게 오류를 기록하고 유창한 msgpack을로 구문 분석합니다.예상대로 일반 TCP 이벤트 필드.

문자 인코딩과 다른 이벤트가 수신되었습니다. {: 텍스트 => "\ xD2X ¢는 \\ \ xD9를 기록 鄣 \ x94 \ xABfluent 테스트"2017-03-10T12 : 58 : 17Z 안녕하세요 유창 \ 연구 \ xACcontainer_id \ xD9 @ 9cbd13eb83a02a1a4d4f83ff063d4e40b4419b7dcbcef960e4689495caa5c132 \ xAEcontainer_name \ XAF/ecstatic_kilby \ xA6source \ xA6stdout \ xC0 " : expected_charset =>"UTF-8 ", : 수준 => : 누군가가이 문제로 실행하거나 어떤이가,

{ 
     "message" => "\\x94\\xABfluent-test\\xD2X¢鄣log\\xD9\\\"2017-03-10T12:58:17Z Hello fluent\\r\\xACcontainer_id\\[email protected]c132\\xAEcontainer_name\\xAF/ecstatic_kilby\\xA6source\\xA6stdout\\xC0", 
     "@version" => "1", 
    "@timestamp" => "2017-03-10T12:58:18.069Z", 
      "host" => "172.17.0.1", 
      "port" => 42016 
} 
내가 다른 생각이 없다} 경고

답변

0

Fluentd 인스턴스를 사용해 보시겠습니까? 그런 식으로 문제가있는 곳을 쉽게 결정할 수 있습니다. Logstash Fluent 코덱이 제대로 작동하지 않는 것처럼 빠른보기를 수행합니다.

+0

Fluentd가 수신기로 작동하므로 잘 모르겠지만이 문제는 도커 로그 드라이버 측면에서 발생합니다. 나는 또한 fluentd-output-gelf 플러그인을 fluentd를 사용하여 logstash-gelf의 전달자로 사용하려고 시도했지만 잘 작동한다. 내가 알 수있는 한, 문제는 logstash 유창한 코덱과 파이프 라인 사이의 문제입니다. –

+0

나의 유동성은 도커로부터 이벤트를 받고 파싱한다. 그것은 나에게 길을 잃은 logstash 진입 점에서 뭔가를 보인다. – cdaringe