elasticsearch 多线程和日志存储聚合筛选器
我有一个从SQL数据库到Elasticsearch的管道,它看起来类似于以下内容:elasticsearch 多线程和日志存储聚合筛选器,elasticsearch,logstash,elasticsearch,Logstash,我有一个从SQL数据库到Elasticsearch的管道,它看起来类似于以下内容: 使用logstash Input jdbc从SQL数据库输入 单个事件的各种过滤和变异 使用logstash filter aggregate根据组id属性聚合事件 使用logstash output Elasticsearch将聚合事件输出到Elasticsearch 事实上,这条管道的吞吐量很低。我知道这是由于聚合步骤(执行一些相对繁重的处理)造成的,我想使用几个线程/进程来提高性能(允许我使用多个核心) 但
我目前的解决方案是运行几个logstash实例,其中每个实例从SQL数据库中选择组ID的某个子集。然而,这有相当多的开销。有没有更好的方法将多个岩心与logstash过滤器集料一起使用?你有点麻烦了
Aggregate
是需要序列化事件流的筛选器之一,因为它认为需要的状态是一个或多个事件。每当需要序列化时,吞吐量都将被限制为单个核心,以确保筛选器工作程序能够看到它需要的所有事件。与数据库一样,解决此问题的方法是分割数据集。你已经发现了
实际上,切分是解决这个问题的最好的单阶段日志存储解决方案
如果你想去那里,有一个多阶段的解决方案。那就是建造第二条管道。它的工作原理如下:
elasticsearch
,与您之前一样elasticsearch
输入来查询看起来像未聚合事件的事件或者,您可以在ElasticSearch中使用非日志存储方法执行聚合。谢谢您的建议。我想我所希望的是一种在单个logstash实例中进行切分的方法,但这似乎是不可能的。