[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サイト:

UNIXサーバの運用管理で欠かせないログ管理
タイトルとURLをコピーしました