DNS キャッシュのための systemd-resolved を Unbound へ変更してみるお話の続編です。
ログローテーションが微妙だった
ローテーションはできているものの、なんか日付なしのプライマリーのログファイルを使ってくれない模様です。
$ ls -lh /var/log/unbound/unbound.log* -rw-r--r-- 1 unbound unbound 0 2月 12 07:08 /var/log/unbound/unbound.log -rw-r--r-- 1 unbound unbound 2.2M 2月 7 09:23 /var/log/unbound/unbound.log-20260206 -rw-r--r-- 1 unbound unbound 0 2月 6 19:09 /var/log/unbound/unbound.log-20260207 -rw-r--r-- 1 unbound unbound 4.9M 2月 8 13:16 /var/log/unbound/unbound.log-20260208 -rw-r--r-- 1 unbound unbound 4.7M 2月 9 21:23 /var/log/unbound/unbound.log-20260209 -rw-r--r-- 1 unbound unbound 1.2M 2月 10 08:01 /var/log/unbound/unbound.log-20260210 -rw-r--r-- 1 unbound unbound 1.4M 2月 11 08:07 /var/log/unbound/unbound.log-20260211 -rw-r--r-- 1 unbound unbound 3.5M 2月 12 19:32 /var/log/unbound/unbound.log-20260212
一番上の日付なしのログファイルが 2 月 12 日の 7 時ころに logrotate によって作成されているのですが、サイズはゼロバイトのままだし一番下のログファイルの方がファイルの更新日が新しくなっていて、どうもこっちのファイルにログを書き出しているようです。
Unbound が open しているファイルを mv でリネームすると inode が変わらないので日付つきのファイルに相変わらず出力しているのだと思われます。
対策してみた
試しに以下のコマンドを発行して Unbound に刺激を与えてみました。
$ sudo systemctl reload unbound
するとどうでしょう。
$ ls -lh /var/log/unbound/unbound.log* -rw-r--r-- 1 unbound unbound 401 2月 12 19:34 /var/log/unbound/unbound.log -rw-r--r-- 1 unbound unbound 2.2M 2月 7 09:23 /var/log/unbound/unbound.log-20260206 -rw-r--r-- 1 unbound unbound 0 2月 6 19:09 /var/log/unbound/unbound.log-20260207 -rw-r--r-- 1 unbound unbound 4.9M 2月 8 13:16 /var/log/unbound/unbound.log-20260208 -rw-r--r-- 1 unbound unbound 4.7M 2月 9 21:23 /var/log/unbound/unbound.log-20260209 -rw-r--r-- 1 unbound unbound 1.2M 2月 10 08:01 /var/log/unbound/unbound.log-20260210 -rw-r--r-- 1 unbound unbound 1.4M 2月 11 08:07 /var/log/unbound/unbound.log-20260211 -rw-r--r-- 1 unbound unbound 3.5M 2月 12 19:34 /var/log/unbound/unbound.log-20260212
一番上の日付なしのログファイルがゼロバイトではなくなり、ファイルの更新日も最新になっています。
ログをローテーションした直後にこの reload を実行してあげると良さそうです。
logrotate には postrotate という指定が可能となっているので、これを活用してみます。
/var/log/unbound/unbound.log {
rotate 7
daily
missingok
ifempty
create
dateext
postrotate
systemctl reload unbound
endscript
}postrotate 〜 endscript の部分を追記してみました。
そして翌日。
$ ls -lh /var/log/unbound/unbound.log* -rw-r--r-- 1 unbound unbound 97K 2月 13 06:44 /var/log/unbound/unbound.log -rw-r--r-- 1 unbound unbound 0 2月 6 19:09 /var/log/unbound/unbound.log-20260207 -rw-r--r-- 1 unbound unbound 4.9M 2月 8 13:16 /var/log/unbound/unbound.log-20260208 -rw-r--r-- 1 unbound unbound 4.7M 2月 9 21:23 /var/log/unbound/unbound.log-20260209 -rw-r--r-- 1 unbound unbound 1.2M 2月 10 08:01 /var/log/unbound/unbound.log-20260210 -rw-r--r-- 1 unbound unbound 1.4M 2月 11 08:07 /var/log/unbound/unbound.log-20260211 -rw-r--r-- 1 unbound unbound 3.5M 2月 12 19:34 /var/log/unbound/unbound.log-20260212 -rw-r--r-- 1 unbound unbound 1.4M 2月 13 06:32 /var/log/unbound/unbound.log-20260213
大成功でした。