tkuchikiの日記

新ブログ https://blog.tkuchiki.net

fluent-plugin-multiprocess を使っているときでも各ファイルの configtest をできるようにする

fluentd の frsyuki/fluent-plugin-multiprocess · GitHub は、
プロセスを分けられて便利なのですが、
td-agent の initscript の configtest をしたときに、/etc/td-agent/td-agent.conf のチェックしか行えません(設定している cmdline の方は configtest されない)。

そのため、service td-agent configtest が通ったから restart する、ということをすると error でこける場合があります(執筆時の数時間前にやらかしました)。

そこで、/etc/td-agent/td-agent.conf の中身から config ファイルを抜き出して、
それぞれ configtest を行う script を書きました。

追記1. cmdline の -c を最後に書くと動かなかったので修正しました

追記2. td-agent.conf の configtest も行うように修正しました

追記3. 必要に応じて、--use-v1-config をつけたほうが良いです

if で毎回 status code をチェックするのは冗長では?と思われることでしょうが、
set -e を使うと、一度 configtest に失敗すると以降の configtest が行えませんので、
このような実装になりました(最初に set -e で実装して気が付きました)。

これで、以下のように実行すれば安心して restart がかけられます。

$ /path/to/multiprocess-configtest.sh && service td-agent restart

initscript に組み込んでも良いと思います。