[Linux][自分用メモ] BINDのlogローテーション設定。

AIX、UNIX、Linux

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サイト:
@IT:止められないUNIXサーバの管理対策 第7回 – Page1 /
http://www.atmarkit.co.jp/fsecurity/rensai/unix_sec07/unix_sec01.html

logrotateがプロセスにHUP送る理由を調べてみた – カイワレの大冒険 /
http://d.hatena.ne.jp/masudaK/20110914/1315999265

この記事を書いた人

kometchtech

うつ病を患いながら、IT業界の末席にいるおっさんエンジニア。科学計算をしたことがないのに、HPC分野にお邪魔している。

興味のある分野で学習したことをblogにまとめつつ、うつ病の経過症状のメモも置いておく日々。

じつはRouterboard User Group JPの中の人でもある。

Amazon欲しいものリスト / Arm板を恵んでくれる人募集中

AIX、UNIX、Linux