【发布时间】:2017-02-06 15:12:27
【问题描述】:
我有一条从 SQL 数据库到 Elasticsearch 的管道,如下所示:
- 使用 logstash-input-jdbc 从 SQL 数据库输入
- 单个事件的各种过滤和突变
- 使用 logstash-filter-aggregate 根据 group_id 属性聚合事件
- 使用 logstash-output-elasticsearch 将聚合事件输出到 Elasticsearch
事实上,这条管道的吞吐量非常低。我知道这是由于聚合步骤(执行一些相对繁重的处理),我想使用多个线程/进程来提高性能(允许我使用多个内核)。
但是,logstash-filter-aggregate 插件不支持多个过滤工作者——大概是因为它无法保证应该组合成一个聚合事件的事件将由同一个工作者处理。
我目前对此的解决方案是运行多个 logstash 实例,其中每个实例从 SQL 数据库中选择 group_ids 的某个子集。但是,这有相当多的开销。有没有更好的方法通过 logstash-filter-aggregate 使用多核?
【问题讨论】: