若是须要在同一进程中运行多个管道,Logstash提供了一种经过名为pipelines.yml
的配置文件完成此操做的方法,这个文件必须放在path.settings
文件夹,并遵循此结构:segmentfault
- 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
文件中未显式设置的设置值将退回到pipelines.yml
设置文件中指定的默认值。性能
在没有参数的状况下启动Logstash时,它将读取pipelines.yml
文件并实例化文件中指定的全部管道,另外一方面,当你使用-e
或-f
时,Logstash会忽略pipelines.yml
文件,并记录对此的警告。code
若是当前配置的事件流不共享相同的输入/过滤器和输出,而且使用标记和条件将它们彼此分离,那么使用多个管道尤为有用。队列
在一个实例中有多个管道还容许这些事件流具备不一样的性能和耐久性参数(例如,管道工做人员和持久队列的不一样设置),这种分离意味着,一个管道中的阻塞输出不会对另外一个管道产生反压力。进程
也就是说,考虑管道之间的资源竞争是很重要的,由于默认值是为单个管道调优的,所以,例如,考虑减小每一个管道使用的管道工人的数量,由于默认状况下每一个管道每一个CPU核心将使用1个工人。事件
每一个管道都隔离了持久队列和死信队列,它们位置的命名空间为pipeline.id
值。ip