Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fluentd可以将日志发送到Logstash吗?_Logstash_Fluentd - Fatal编程技术网

Fluentd可以将日志发送到Logstash吗?

Fluentd可以将日志发送到Logstash吗?,logstash,fluentd,Logstash,Fluentd,我一整天都在试着这么做。我想通过FluentD日志引擎将日志从Docker发送到FluentD,然后从FluentD将这些日志发送到logstash进行处理 但我一直从logstash收到此错误: {:timestamp=>"2016-03-09T23:29:19.388000+0000", :message=>"An error occurred. Closing connection", :client=>"172.18.0.1:57259", :exception=&

我一整天都在试着这么做。我想通过FluentD日志引擎将日志从Docker发送到FluentD,然后从FluentD将这些日志发送到logstash进行处理

但我一直从logstash收到此错误:

{:timestamp=>"2016-03-09T23:29:19.388000+0000",
 :message=>"An error occurred. Closing connection",
 :client=>"172.18.0.1:57259", :exception=>#<TypeError: can't convert String into Integer>,
 :backtrace=>["org/jruby/RubyTime.java:1073:in `at'", 
"/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-event-2.2.2-java/lib/logstash/timestamp.rb:27:in `at'", 
"/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-codec-fluent-2.0.2-java/lib/logstash/codecs/fluent.rb:41:in `decode'", 
"org/msgpack/jruby/MessagePackLibrary.java:195:in `each'", 
"/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-codec-fluent-2.0.2-java/lib/logstash/codecs/fluent.rb:40:in `decode'", 
"/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-tcp-3.0.2/lib/logstash/inputs/tcp.rb:153:in `handle_socket'", 
"/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-tcp-3.0.2/lib/logstash/inputs/tcp.rb:143:in `server_connection_thread'"], :level=>:error}
相当基本的fluentd配置:

<source>
  @type forward
</source>


<match docker.json>
  @type forward
  send_timeout 60s 
  recover_wait 10s 
  heartbeat_type none
  phi_threshold 16
  hard_timeout 60s 

  <server>
    name logstash
    host 172.18.0.2
    port 4000
    weight 60
  </server>
</match>

<match docker.**>
  @type stdout
</match>
有人会认为这会起作用,但我已经发现Logstash不会:

使用fluentd的forward_out心跳配置。 Logstash不会在与TCP相同的端口上打开UDP端口。 上面的错误。
如果我用Ruby编写Fluentd message pack消息并手动发送,上述配置确实有效。但关键是我希望Fluentd在本地管理日志并将其发送到外部logstash服务器,以便将消息正确地处理为JSON。

好吧,没有办法将数据从Fluentd传输到logstash。我们需要编写任何Fluentd输出插件来向Logstash发送数据,或者编写任何Logstash输入插件来从Fluentd接收数据

仅供参考:有一些用于Logstash->Fluentd方向的插件:

fluent插件beats fluentd弹性beats协议输入插件 logstash输出fluentd logstash输出插件,用于将数据发送到fluentd
抱歉,没有办法将数据从Fluentd传输到Logstash。我们需要编写任何Fluentd输出插件来向Logstash发送数据,或者编写任何Logstash输入插件来从Fluentd接收数据

仅供参考:有一些用于Logstash->Fluentd方向的插件:

fluent插件beats fluentd弹性beats协议输入插件 logstash输出fluentd logstash输出插件,用于将数据发送到fluentd
您可以直接将其转发到logstash tcp输入

这将直接将数据发送到logstash tcp input或任何其他json格式的接收器,也支持ssl/tls


首先看到这里。

您可以将其直接转发到logstash tcp输入

这将直接将数据发送到logstash tcp input或任何其他json格式的接收器,也支持ssl/tls


首先看到这个。

我们找到了一种让fluent->logstash工作的方法。将时间_设置为_整数true。fluentd端的最小配置是

<source>
  @type http
  @id input_http
  port 8888
</source>

<match **>
  @type forward
  time_as_integer true
  <server>
    host localhost
    port 24114
  </server>
</match>
测试

curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test
如文件所示。使用time_as_integer设置,logstash输出将看起来很好,如

{
          "port" => 32844,
      "@version" => "1",
          "host" => "localhost",
          "json" => "message",
    "@timestamp" => 2018-04-26T15:14:28.000Z,
          "tags" => [
        [0] "debug.test"
    ]
}
如果没有它,我会

[2018-04-26T15:16:00,115][ERROR][logstash.codecs.fluent   ] Fluent parse error, original data now in message field {:error=>#<MessagePack::UnknownExtTypeError: unexpected extension type>, :data=>["fluent.info", "\x92\xD7\u0000Z\xE1\xEC\xF4\u0006$\x96傦worker\u0000\xA7message\xD9&fluentd worker is now running worker=0", {"size"=>1, "compressed"=>"text"}]}
{
          "port" => 32972,
      "@version" => "1",
       "message" => [
        [0] "fluent.info",
        [1] "\x92\xD7\u0000Z\xE1\xEC\xF4\u0006$\x96傦worker\u0000\xA7message\xD9&fluentd worker is now running worker=0",
        [2] {
                  "size" => 1,
            "compressed" => "text"
        }
    ],
          "host" => "localhost",
    "@timestamp" => 2018-04-26T15:16:00.116Z,
          "tags" => [
        [0] "_fluentparsefailure"
    ]
}

我们找到了让fluent->logstash工作的方法。将时间_设置为_整数true。fluentd端的最小配置是

<source>
  @type http
  @id input_http
  port 8888
</source>

<match **>
  @type forward
  time_as_integer true
  <server>
    host localhost
    port 24114
  </server>
</match>
测试

curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test
如文件所示。使用time_as_integer设置,logstash输出将看起来很好,如

{
          "port" => 32844,
      "@version" => "1",
          "host" => "localhost",
          "json" => "message",
    "@timestamp" => 2018-04-26T15:14:28.000Z,
          "tags" => [
        [0] "debug.test"
    ]
}
如果没有它,我会

[2018-04-26T15:16:00,115][ERROR][logstash.codecs.fluent   ] Fluent parse error, original data now in message field {:error=>#<MessagePack::UnknownExtTypeError: unexpected extension type>, :data=>["fluent.info", "\x92\xD7\u0000Z\xE1\xEC\xF4\u0006$\x96傦worker\u0000\xA7message\xD9&fluentd worker is now running worker=0", {"size"=>1, "compressed"=>"text"}]}
{
          "port" => 32972,
      "@version" => "1",
       "message" => [
        [0] "fluent.info",
        [1] "\x92\xD7\u0000Z\xE1\xEC\xF4\u0006$\x96傦worker\u0000\xA7message\xD9&fluentd worker is now running worker=0",
        [2] {
                  "size" => 1,
            "compressed" => "text"
        }
    ],
          "host" => "localhost",
    "@timestamp" => 2018-04-26T15:16:00.116Z,
          "tags" => [
        [0] "_fluentparsefailure"
    ]
}

你在Logstash做什么样的处理?虽然我不能保证,但Fluentd可能能够取代Logstash,这取决于使用情况。我正在使用Fluentd日志驱动程序进行docker,我遇到的问题是,它没有将我的日志消息解析为JSON,即使它们是JSON。它创建一个转义字符串表示。您在Logstash中执行什么样的处理?虽然我不能保证,但Fluentd可能能够取代Logstash,这取决于使用情况。我正在使用Fluentd日志驱动程序进行docker,我遇到的问题是,它没有将我的日志消息解析为JSON,即使它们是JSON。它创建了一个转义字符串表示。有一些选项我忘记了。。。为其他协议使用插件。例如,抄写器、水槽或其他东西。有一些选项我忘记了。。。为其他协议使用插件。例如,scribe、flume或其他。经过一天的谷歌搜索和多次失败,您关于时间戳为整数的提示使我的fluentd成功地使用fluentd编解码器将数据发送到logstash tcp输入。伟大的发现!经过一天的谷歌搜索和多次失败,您关于时间戳为整数的提示使我的fluentd成功地使用fluentd编解码器将数据发送到logstash tcp输入。伟大的发现!