Fluentd – td-agent のインストールと初期設定

インストール

$ curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-bionic-td-agent3.sh | sh
$ td-agent --version

オープンファイル数上限解放

Ubuntu 18.04 デフォルトだと 1024 になっています。

$ ulimit -n
1024

limites.conf で 65534 に増やし、td-agent.service を再起動しておきます。

$ vi /etc/security/limits.conf 
$ sudo systemctl status td-agent.service

動作確認

curl で JSON をポストして td-agent.log へのログ出力状況を確認します。

$ curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test
$  tail /var/log/td-agent/td-agent.log

トラブルシューティング

td-agent.log に以下のような出力が出ました。nginx のアクセスログをオープンできないという内容です。

2019-07-20 16:23:12 +0900 [error]: #0 Permission denied @ rb_sysopen - /var/log/nginx/access.log
2019-07-20 16:23:12 +0900 [error]: #0 suppressed same stacktrace

うちは ログ出力は www-data ユーザが出力しています。グループは adm になっています。

$ ls -al /var/log/nginx/access.log
-rw-r----- 1 www-data adm 18688 Jul 20 14:47 /var/log/nginx/access.log

そのため、adm グループに td-agent ユーザを追加してやることで読めるようにします。

$ sudo usermod -aG adm td-agent
$ cat /etc/group | grep adm
adm:x:4:syslog,td-agent
$ sudo vi /lib/systemd/system/td-agent.service 
$ sudo systemctl restart td-agent.service
Warning: The unit file, source configuration file or drop-ins of td-agent.service changed on disk. Run 'systemctl daemon-reload' to reload units.

他の方法として、td-agent を root で起動するという手もありますが、専用ユーザがデフォルトで用意されているにもかかわらず root で起動するのは私はあまりよくないという考えです。
理解したうえでやるのであれば td-agent.service を編集して起動ユーザやグループを root にしてサービス再起動すれば OK です。

$ sudo vi /lib/systemd/system/td-agent.service 
$ sudo systemctl restart td-agent.service

参考

スポンサーリンク