🎉

【Fluentd】td-agentを複数プロセスで起動する

2023/03/17に公開1

td-agentを複数プロセスで起動する最低限度の設定を紹介します。

コピペでOKです。

環境

・OS: CentOS 7.9

・td-agent: 3.8.1

td-agentのインストール

以下のコマンドを実行すると、インストールされます。

curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent3.sh | sh

fluent-plugin-multiprocessのインストール

以下のコマンドを実行すると、インストールされます。

/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-multiprocess

td-agentの設定ファイルを作成

以下の通りtd-agentの設定ファイルを作成します。

・/etc/td-agent/td-agent.conf
※td-agent.confは、td-agentインストール時に作成されているので、元のファイルをバックアップして、新しく作成してください。

<source>
  @type multiprocess
 
  <process>
    cmdline -c /etc/td-agent/td-agent-child1.conf --log /var/log/td-agent/td-agent-child1.log
    pid_file /run/td-agent/td-agent-child1.pid
  </process>
  <process>
    cmdline -c /etc/td-agent/td-agent-child2.conf --log /var/log/td-agent/td-agent-child2.log
    pid_file /run/td-agent/td-agent-child2.pid
  </process>
</source>

・/etc/td-agent/td-agent-child1.conf

<source>
  @type tail
  path /var/log/test/test1.log
  pos_file /var/log/test/test1.log.pos
  tag test.event
  <parse>
    @type regexp
    expression ^(?<name>[^ ]*)$
  </parse>
</source>
 
<match test.**>
  @type stdout
</match>

・/etc/td-agent/td-agent-child2.conf

<source>
  @type tail
  path /var/log/test/test2.log
  pos_file /var/log/test/test2.log.pos
  tag test.event
  <parse>
    @type regexp
    expression ^(?<name>[^ ]*)$
  </parse>
</source>
 
<match test.**>
  @type stdout
</match>

td-agent-child1.conf、 td-agent-child2.confにあるpathが入力ファイルになります。

設定ファイルを作成したら、td-agentを再起動します。

systemctl restart td-agent

入力ファイルにデータを追加するスクリプトを作成

入力ファイルを作成するフォルダを作成します。

cd /var/log/
mkdir test
chmod -R 777 test

入力ファイルにデータを追加するスクリプトを作成します。

・test.sh(作成場所は任意)

#!/bin/sh
 
while true
do
    echo 'test1' >> /var/log/test/test1.log
    echo 'test2' >> /var/log/test/test2.log
    sleep 2
done

動作確認

ターミナル(例えば、Tera Term)を3窓起動します。

1窓で以下を実行します。

tail -f /var/log/td-agent/td-agent-child1.log

2窓で以下を実行します。

tail -f /var/log/td-agent/td-agent-child2.log

3窓で以下を実行します。

sh test.sh

以下のような結果が表示され、td-agentの処理が2プロセスで実行されることを確認できます。
・1窓

2021-09-25 18:31:41.729989616 +0900 test.event: {"name":"test1"}
2021-09-25 18:31:43.753916421 +0900 test.event: {"name":"test1"}
2021-09-25 18:31:45.774160137 +0900 test.event: {"name":"test1"}
2021-09-25 18:31:47.786154392 +0900 test.event: {"name":"test1"}
2021-09-25 18:31:49.798616913 +0900 test.event: {"name":"test1"}
2021-09-25 18:31:51.814665758 +0900 test.event: {"name":"test1"}
2021-09-25 18:31:53.821096046 +0900 test.event: {"name":"test1"}
2021-09-25 18:31:55.829277438 +0900 test.event: {"name":"test1"}
2021-09-25 18:31:57.841652265 +0900 test.event: {"name":"test1"}

・2窓

2021-09-25 18:32:54.224697625 +0900 test.event: {"name":"test2"}
2021-09-25 18:32:56.240475982 +0900 test.event: {"name":"test2"}
2021-09-25 18:32:58.254149458 +0900 test.event: {"name":"test2"}
2021-09-25 18:33:00.267759312 +0900 test.event: {"name":"test2"}
2021-09-25 18:33:02.275536545 +0900 test.event: {"name":"test2"}
2021-09-25 18:33:04.284903741 +0900 test.event: {"name":"test2"}
2021-09-25 18:33:06.304048593 +0900 test.event: {"name":"test2"}
2021-09-25 18:33:08.310172104 +0900 test.event: {"name":"test2"}

Discussion