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 に組み込んでも良いと思います。