logstash接受logback通过logstash-logback-encoder发送的数据时丢失,如何解决?

发布于 2022-09-05 06:32:07 字数 1063 浏览 21 评论 0

现在的情况是logstash能接受到数据并在es里elasticsearch能显示出来,只是数据不全,比如我发了10w条,它只能接受到1w或者2w,数据量小的时候还好,一大就差得多了。
下面是logback.xml的配置文件:

    <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
      <destination>192.168.4.212:8881</destination>
      <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
    </appender>



    <logger name="commonLog" level="debug" additivity="false"> 
               <appender-ref ref="logstash" />  
    </logger> 

然后logstash的配置:

input{
tcp {
    host => "192.168.4.212"
    port => 8881
    type => "tcplog"
    mode => "server"
    tags => ["tags"]
    codec => json_lines
  }
}

output{
    elasticsearch{ 
         hosts=>"192.168.4.212" 
         index=>"test"
    }
}

发送完后用来查看logstash收到条数的命令:

curl "http://192.168.4.212:9200/_cat/indices?v"

我调过logstash.yml里的参数,依然无法解决这个问题。
有哪位大神知道,还望不吝赐教。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

余生一个溪 2022-09-12 06:32:07

嗨呀,没认真看人家的官方文档啊。之前测试过logback客户端通过socket发送到服务端只要eventDelayLimit参数配置合适,数据就不会丢失。还想参数logback源码修改一下logstash-logback-encoder源码来着。其实logstash-logback-encoder的GitHub说明里原文“The async appenders will never block the logging thread. If the RingBuffer is full (e.g. due to slow network, etc), then events will be dropped.”然后在源码里找到这个RingBuffer对应的字段是queueSize。其实这个queueSize之前我在logback.xml里调式过,没有作用,后来就放弃了。但之后在源码里对queueSize有注释,这个值只能配置2的N次幂(2,4,8,16...),默认8192,单位是B。所以解决方案就是:在logback的配置文件中配置:
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">

     <destination>192.168.4.212:8881</destination>
      <queueSize>1048576</queueSize>
  <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
    </appender>
    

queueSize配置合适的大小,就可以了,发送到logstash的数据就不会丢失了。正如官方文档里写的那样:* AsyncDisruptorAppender追加器与Logback的AsyncAppender类似,不同之处在于使用LMAX Disruptor RingBuffer作为排队机制,而不是BlockingQueue。 这些异步appender可以委托给任何其他底层的logback appender。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文