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进程进行绑定。

 

换句话说,就是用单独的某个进程,来处理特定的任务,采集不同类型的日志。

posted @ 2022-12-12 14:16  Zhai_David  阅读(96)  评论(0编辑  收藏  举报