多个管道
如果需要在同一进程中运行多个管道,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
文件中未显式设置的设置值将退回到pipelines.yml
设置文件中指定的默认值。
在没有参数的情况下启动Logstash时,它将读取pipelines.yml
文件并实例化文件中指定的所有管道,另一方面,当你使用-e
或-f
时,Logstash会忽略pipelines.yml
文件,并记录对此的警告。
使用注意事项
如果当前配置的事件流不共享相同的输入/过滤器和输出,并且使用标记和条件将它们彼此分离,那么使用多个管道尤其有用。
在一个实例中有多个管道还允许这些事件流具有不同的性能和耐久性参数(例如,管道工作人员和持久队列的不同设置),这种分离意味着,一个管道中的阻塞输出不会对另一个管道产生反压力。
也就是说,考虑管道之间的资源竞争是很重要的,因为默认值是为单个管道调优的,因此,例如,考虑减少每个管道使用的管道工人的数量,因为默认情况下每个管道每个CPU核心将使用1个工人。
每个管道都隔离了持久队列和死信队列,它们位置的命名空间为pipeline.id
值。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。