Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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
<img src="//i.stack.imgur.com/RUiNP.png" height="16" width="18" alt="" class="sponsor tag img">elasticsearch 多线程和日志存储聚合筛选器_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Logstash - Fatal编程技术网 elasticsearch 多线程和日志存储聚合筛选器,elasticsearch,logstash,elasticsearch,Logstash" /> elasticsearch 多线程和日志存储聚合筛选器,elasticsearch,logstash,elasticsearch,Logstash" />

elasticsearch 多线程和日志存储聚合筛选器

elasticsearch 多线程和日志存储聚合筛选器,elasticsearch,logstash,elasticsearch,Logstash,我有一个从SQL数据库到Elasticsearch的管道,它看起来类似于以下内容: 使用logstash Input jdbc从SQL数据库输入 单个事件的各种过滤和变异 使用logstash filter aggregate根据组id属性聚合事件 使用logstash output Elasticsearch将聚合事件输出到Elasticsearch 事实上,这条管道的吞吐量很低。我知道这是由于聚合步骤(执行一些相对繁重的处理)造成的,我想使用几个线程/进程来提高性能(允许我使用多个核心) 但

我有一个从SQL数据库到Elasticsearch的管道,它看起来类似于以下内容:

  • 使用logstash Input jdbc从SQL数据库输入
  • 单个事件的各种过滤和变异
  • 使用logstash filter aggregate根据组id属性聚合事件
  • 使用logstash output Elasticsearch将聚合事件输出到Elasticsearch
  • 事实上,这条管道的吞吐量很低。我知道这是由于聚合步骤(执行一些相对繁重的处理)造成的,我想使用几个线程/进程来提高性能(允许我使用多个核心)

    但是,logstash filter aggregate插件不支持多个筛选器工作程序——可能是因为它无法保证应该组合成一个聚合事件的事件将由同一个工作程序处理


    我目前的解决方案是运行几个logstash实例,其中每个实例从SQL数据库中选择组ID的某个子集。然而,这有相当多的开销。有没有更好的方法将多个岩心与logstash过滤器集料一起使用?

    你有点麻烦了
    Aggregate
    是需要序列化事件流的筛选器之一,因为它认为需要的状态是一个或多个事件。每当需要序列化时,吞吐量都将被限制为单个核心,以确保筛选器工作程序能够看到它需要的所有事件。与数据库一样,解决此问题的方法是分割数据集。你已经发现了

    实际上,切分是解决这个问题的最好的单阶段日志存储解决方案

    如果你想去那里,有一个多阶段的解决方案。那就是建造第二条管道。它的工作原理如下:

  • 第一条管道接收事件并将相关事件标记为相关,但不执行聚合
  • 第一个管道输出到
    elasticsearch
    ,与您之前一样
  • 第二条管道使用
    elasticsearch
    输入来查询看起来像未聚合事件的事件
  • 聚合层聚合已完成的事件(具有其所有部分)
  • 聚合事件将刷新到Elasticsearch

  • 或者,您可以在ElasticSearch中使用非日志存储方法执行聚合。

    谢谢您的建议。我想我所希望的是一种在单个logstash实例中进行切分的方法,但这似乎是不可能的。