BINDのlogのローテーションについて、通常はnamed.confのlogging句に以下のように記述するようにすると思います。
# Webではこの方法しか見ないような気がします。それとも自分が不勉強なせいでしょうか?
環境:CentOS release 6.3 (Final)(64bit)
channel "log_default" {
file "/var/log/named/default.log" versions 7 size 10m;
severity info;
print-severity yes;
print-time yes;
};
個人的にはlogはDailyでローテーションしてやるのが個人的には好みだったので、logrotate.d
のconfigを見なおしてみることにしました。
/var/named/data/named.run {
missingok
create 0644 named named
postrotate
/sbin/service named reload 2> /dev/null > /dev/null || true
endscript
}
/var/named/data/named.run /var/log/named/default.log /var/log/named/queries.log /var/log/named/security.log {
rotate 7 #7回ローテーションする
missingok
notifempty #元のログファイルが空ならばローテーションしない
create 0644 named named
copytruncate # copy の動作を行った後、元のログファイルの内容 を消去する。
compress # 圧縮する
sharedscripts # ローテーションの条件に合致するログが複数あった場合に、prerotate, postrotate のスクリプトを一度だけ実行する
dateext # logrotateのログファイル名に日付を設定する
postrotate
kill -HUP `cat /var/run/named/named.pid` # ハングアップシグナルを送る
endscript
}
あとは、設定が正常かどうか、以下のコマンドで確かめているみるのがいいみたいです。
logrotate -dv /etc/logrotate.d/<対象ファイル> # テストのみ
logrotate -f /etc/logrotate.d/<対象ファイル> # 実際に強制実行する
自分の環境ではこれでdailyのlogローテーションがうまくいくようになりました。
ただこれがLinuxのお作法として正しいものかよく分かっていないのが本当のところなので、ご存知のかたはぜひご教示いただければと思います。
kill HUPとlogローテーションの関係の参考Webサイト:
UNIXサーバの運用管理で欠かせないログ管理