多个 Pipeline
编辑多个 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
值命名空间化。