fluentd中,当设置多个worker进程时,如何将插件与进程进行绑定?
设置多worker进程
当通过如下的命令,设置多个worker进程时:
<system> workers 4 </system>
示例配置
可以特定的插件与进程进行绑定,如:
<system> workers 4 </system> # 该插件运行在所有的worker上 <source> @type sample tag test.allworkers sample {"message": "Run with all workers."} </source> # 这个插件只运行在worker-0上 <worker 0> <source> @type sample tag test.oneworker sample {"message": "Run with only worker-0."} </source> </worker> # 这个插件运行在worker0,worker1上 <worker 0-1> <source> @type sample tag test.someworkers sample {"message": "Run with worker-0 and worker-1."} </source> </worker> # 进行过滤,增加worker_id字段 <filter test.**> @type record_transformer <record> worker_id "#{worker_id}" </record> </filter> # 将结果输出到 <match test.**> @type stdout </match>
修改该配置,重启服务,查看日志:
- test.allworkers:运行在所有的worker上
- test.oneworker:运行在worker 0上
- test.someworkers: 运行在woker0,worker1上
绑定worker的方法
worker进程ID,从编号 0 开始。
<worker N>
指定在某个worker进程
<worker 0> <source> @type sample tag test.oneworker sample {"message": "Run with only worker-0."} </source> </worker>
<worker N-M>
指定在某几个worker进程
<worker 0-1> <source> @type sample tag test.someworkers sample {"message": "Run with worker-0 and worker-1."} </source> </worker>
注意:如果fluentd设置了多个worker,但是某个插件,没有指定具体的worker,那么,就是会使用所有的worker进程。
这样就实现了,将某些插件和特定的worker进程进行绑定。
换句话说,就是用单独的某个进程,来处理特定的任务,采集不同类型的日志。