多个 Pipeline

编辑

如果您需要在同一个进程中运行多个 Pipeline,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 格式,包含一系列字典,每个字典描述一个 Pipeline,每个键值对指定该 Pipeline 的一个设置。示例显示了由其 ID 和配置路径描述的两个不同的 Pipeline。对于第一个 Pipeline,pipeline.workers 的值设置为 3,而在另一个 Pipeline 中,启用了持久队列功能。在 pipelines.yml 文件中未明确设置的设置值将回退到 logstash.yml 设置文件 中指定的默认值。

当您不带参数启动 Logstash 时,它将读取 pipelines.yml 文件并实例化文件中指定的所有 Pipeline。另一方面,当您使用 -e-f 时,Logstash 将忽略 pipelines.yml 文件并记录一条警告。

使用注意事项

编辑

如果您当前的配置具有不共享相同输入/过滤器和输出的事件流,并且使用标签和条件彼此分离,则使用多个 Pipeline 特别有用。

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

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

持久队列和死信队列按每个 Pipeline 隔离,其位置由 pipeline.id 值命名空间化。