본문 바로가기

DATA COLLECTOR/Fluentd

Fluentd config Multi process workers

목적

fluentd 는 멀티 프로세스 를 지원한다. 감시 대상이 많고 멀티코어 환경이라면 worker process를 늘려 throughput 을 늘릴 수도 있다.

 

설정

공통 설정

# 2개의 worker process 생성
<system>
        workers 2
</system>
 
 
# 아래는 ps 명령어 로 확인된 process 갯수
[root@tlog-transmit td-agent]# ps -ef | grep fluent
root      6952  6245  5 04:26 pts/1    00:00:00 /opt/td-agent/bin/ruby /opt/td-agent/bin/fluentd -c td-agent.conf
root      6957  6952  8 04:26 pts/1    00:00:01 /opt/td-agent/bin/ruby -Eascii-8bit:ascii-8bit /opt/td-agent/bin/fluentd -c td-agent.conf --under-supervisor
root      6958  6952  8 04:26 pts/1    00:00:01 /opt/td-agent/bin/ruby -Eascii-8bit:ascii-8bit /opt/td-agent/bin/fluentd -c td-agent.conf --under-supervisor

 

<worker> 태그 설정

<worker> 태그를 사용하면 단수 혹은 복수 의  worker 에게 개별적인 로직을 부여할 수 있고

태그를 사용하지 않는다면 모든 worker 가 같은 로직을 부여받게 된다.

# work on multi process workers. worker0 - worker3 run in_forward
<source>
  @type forward
</source>
 
 
# work on only worker 0. worker1 - worker3 don't run in_tail
<worker 0>
  <source>
    @type tail
  </source>
</worker>
 
 
# work on multi process workers. worker0 - worker1 run in_forward
<worker 0-1>
  <source>
    @type tail
  </source>
</worker>

설정시 주의점

fluentd 는 <input>, <filter>, <output> 을 싸이클을 가지고 있는데 worker 를 설정할때도 이 싸이클을 유지한다.

예를 들어 1번 worker 에거 <input> 만 나머지는 다른 worker에게 부여하는 등 영역을 분담하는식의 설정을 할 수 없다.

 

설정 예

<system>
        workers 2
</system>
 
<worker 0>
<source>
  @type tail
  path /efs/bos/*/*/*/*.log
  tag bos.tail
  <parse>
        @type json
  </parse>
  pos_file /efs/fluentd/fluentd0.pos
  read_from_head true
  #asis_key message
  refresh_interval 5
</source>
<match bos.tail>
    @type forward
    send_timeout 60s
    recover_wait 10s
    hard_timeout 60s
 
    # primary host
    <server>
        host 127.0.0.1
        port 8888
    </server>
    # secondary host
    <buffer>
        @type file
        path /efs/fluentd/buffer/td0
    </buffer>
</match>
</worker>
<worker 1>
<source>
  @type tail
  path /efs/casino/*/*/*/*.log
  tag bos.tail
  <parse>
        @type json
  </parse>
  pos_file /efs/fluentd/fluentd1.pos
  read_from_head true
  #asis_key message
  refresh_interval 5
</source>
<match bos.tail>
    @type forward
    send_timeout 60s
    recover_wait 10s
    hard_timeout 60s
 
    # primary host
    <server>
        host 127.0.0.1
        port 8888
    </server>
    # secondary host
    <buffer>
        @type file
        path /efs/fluentd/buffer/td1
    </buffer>
</match>
</worker>

Reference

'DATA COLLECTOR > Fluentd' 카테고리의 다른 글

Fluentd config copy (file to csv,json)  (0) 2021.10.01
Fluentd config High Availability  (0) 2021.10.01
Fluentd config source  (0) 2021.10.01
Fluentd config directives, section  (0) 2021.10.01
Fluentd 설치  (0) 2021.10.01