1. 多管道配置

如果需要在同一个进程运行多个管道(pipeline),可以配置logstash的pipelines.yml文件,该文件在logstash/config目录下。配置文件的结构如下:

1
2
3
4
5
6
- 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,而在另一个则启用持久队列特性。管道之间的资源竞争是很重要的,因为默认值是为单个管道调优的,考虑减少每个管道使用的管道工人的数量可以对单个管道调优,因为默认情况下每个管道每个CPU核心将使用1个工人。在pipelines.yml文件中未显式设置值的将使用默认值。

2. 启动

在logstash的bin目录下:

1
# ./logstash

在没有参数的情况下启动logstash时,它将读取pipelines.yml文件并实例化文件中指定的所有管道,当使用-e或-f时,Logstash会忽略pipelines.yml文件,并记录对此的警告。

3. 注意事项

  • 当输入使用相同插件的时候,比如都用了s3插件,需要考虑了设置临时存储文件的路径。因为s3插件在没有设置文件下载路径的情况下,默认把文件下载到了“/tmp/logstash”路径下,当有多个管道进行一起下载的时候,如果对命名没有区分,则可能造成处理文件出现异常。解决方法是指定各自管道的临时存储路径,s3的指定方法是设置temporary_directory参数,并在路径下创建指定的目录。
  • 当数据导入出现异常,需要删除数据重新启动的时候,需要先删除对导入数据进度的记录文件,具体做法是将logstash\data\下的文件都删掉。