多个管道编辑

如果您需要在同一个进程中运行多个管道,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 值进行命名空间划分。