官方推荐的方式是:一个总控文件 pipelines.yml,多个独立的 *.conf 管道文件。启动时不再用 -f,而是让 Logstash 自动读取总控配置。


1. 为什么要用多 Pipeline?

  • 隔离:不同业务的输入/输出不会互相影响。
  • 并行:每个 pipeline 都有独立的线程池和队列。
  • 灵活:某个 pipeline 卡住不会拖慢全局。

2. 推荐目录结构

/etc/logstash/                ← path.settings
├─ pipelines.yml               # 管道总控文件(必须有)
├─ logstash.yml                # 全局配置(可选)
├─ jvm.options                 # JVM 参数(可选)
└─ pipelines/                  # 业务管道文件夹
   ├─ app1.conf
   ├─ app2.conf
   └─ ...

3. 总控文件 pipelines.yml

- pipeline.id: app1
  path.config: "/etc/logstash/pipelines/app1.conf"
  queue.type: persisted
  pipeline.workers: 8

- pipeline.id: app2
  path.config: "/etc/logstash/pipelines/app2.conf"
  queue.type: memory
  pipeline.workers: 4

👉 总控里只关心:谁是 pipeline、去哪找配置、性能参数怎么调
👉 每个管道的业务逻辑仍写在独立 *.conf 文件中。


4. 业务管道文件(示例)

pipelines/app1.conf

input { beats { port => 5044 } }
filter { mutate { add_field => { "[@metadata][pipe]" => "app1" } } }
output { elasticsearch { hosts => ["http://es:9200"] index => "app1-%{+YYYY.MM.dd}" } }

5. 启动方式

不再用 -f,直接指定 path.settings

bin/logstash --path.settings /etc/logstash -r
  • --path.settings → 指定配置目录(包含 pipelines.yml)
  • -r → 热加载 conf 文件变更
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐