若是須要在同一進程中運行多個管道,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