Logstash作为具有JDBC输入的服务

时间:2019-04-26 15:36:50

标签: elasticsearch service logstash logstash-jdbc

我目前有一项服务,该服务运行多个查询以在数据库中构建数据。然后,它使用Logstash的JDBC输入插件将数据发送到Elastic Search。 问题在于,Logstash需要花费大量时间进行引导(有时比将数据发送到Elastic Search所需的时间还要长)。

我已经决定探索让Logstash作为服务运行以消除启动时间,但是似乎没有办法使其作为服务运行并接受“请求”来运行JDBC语句。

最近的事情似乎是使用TCP / HTTP / Websocket插件从我的服务接收数据,然后将其发送到Elastic Search。

尝试开发类似的东西是否有意义,或者通过我的服务直接与Elastic Search交流会更好?

我希望我的问题很清楚,谢谢。

1 个答案:

答案 0 :(得分:0)

回答我自己的问题,以供日后遇到同一问题的人参考。

阅读了无数论坛讨论后,我得出结论:

  1. 当前无法设置JDBC输入并随意触发(https://discuss.elastic.co/t/trigger-logstash-jdbc-input-plugin/54278)。您可以得到的最接近的结果是使用schedule选项,定期执行此操作或手动启动/停止服务,这使我们可以
  2. 启动Logstash花费大量时间,因为这是Java服务(Why does logstash take so long to start/load?)。加快速度的唯一方法是提高机器规格,或者对于5.5.0之前的版本,修改Java的熵源:(https://discuss.elastic.co/t/logstash-starting-damn-slow/125708/3
  3. 一个人可以完全Logstash,而改为使用一个(或多个并行!!!)ES _bulk请求来尽可能快地填充索引(https://discuss.elastic.co/t/fastest-way-to-import-billions-of-documents/81317/3)。
  4. 如果不想删除Logstash,则建议编写一个自定义输入插件:https://www.elastic.co/guide/en/logstash/current/input-new-plugin.html