多管道

编辑

如果您需要在同一进程中运行多个管道,Logstash 提供了一种通过名为 pipelines.yml 的配置文件来实现的方法。此文件必须放置在 path.settings 文件夹中,并遵循以下结构:

- pipeline.id: my-pipeline_1
  path.config: "/etc/path/to/p1.config"
  pipeline.workers: 3
- pipeline.id: my-other-pipeline
  path.config: "/etc/different/path/p2.cfg"
  queue.type: persisted

此文件采用 YAML 格式,包含字典列表,其中每个字典描述一个管道,每个键/值对指定该管道的设置。该示例显示了由其 ID 和配置路径描述的两个不同管道。对于第一个管道,pipeline.workers 的值设置为 3,而另一个管道则启用了持久队列功能。在 pipelines.yml 文件中未明确设置的设置值将回退到 logstash.yml 设置文件 中指定的默认值。

当您在没有参数的情况下启动 Logstash 时,它将读取 pipelines.yml 文件并实例化该文件中指定的所有管道。另一方面,当您使用 -e-f 时,Logstash 将忽略 pipelines.yml 文件并记录一个关于它的警告。

使用注意事项

编辑

如果您的当前配置具有不共享相同输入/过滤器和输出的事件流,并且正在使用标签和条件相互分离,那么使用多个管道尤其有用。

在单个实例中拥有多个管道还允许这些事件流具有不同的性能和持久性参数(例如,管道工作线程和持久队列的不同设置)。这种分离意味着一个管道中阻塞的输出不会对另一个管道产生反压。

也就是说,重要的是要考虑到管道之间的资源竞争,因为默认值是针对单个管道进行调整的。因此,例如,请考虑减少每个管道使用的管道工作线程的数量,因为默认情况下,每个管道将为每个 CPU 核心使用 1 个工作线程。

持久队列和死信队列是每个管道隔离的,它们的位置由 pipeline.id 值进行命名空间。