2009年11月1日日曜日

syslog-ngのログローテーション

ログローテーションとは。
日々、出力され続けるログが1つのファイルに書き続けられると、
膨大な量になってしまう。そこで、週に1回程度の割合で、
ログファイルを新しくし、古いログを圧縮する。
これにより、膨大な量にならなくてすむ。

1,デフォルトのsyslogのログローテーション。
デフォルトのsyslogのログローテーションには、logrotateが使用されている。
@IT:システム管理の基礎 syslogdの設定をマスターしよう(3/3)
logrotateは指定されたタイミングでログファイルのバックアップを取り、新しいログファイルを作成してログのローテーションを行います。

全体の設定ファイルは、/etc/logrotate.conf。
ログファイルごとの設定は、/etc/logrotate.d/syslog(など)。
これ自体は、cronで定期的に実行される。

2,logrotateを使ったsyslog-ngのログローテーション。
第22回 「syslog-ng によるセキュアなログサーバー構築」
ログのローテーションは、syslog-ng をインストールすれば自動で行われている。/etc/logrotate.d/syslog-ng というファイルがあるので設定を変更したい場合は編集しておこう。

syslog-ngをインストールすると、/etc/logrotate.d/syslog-ngも自動で設定される場合もあるようだが、marutamaの場合は設定されなかった。

3,syslog-ngのマクロを使ったログローテーション。
syslog-ngのマクロを使い、日にち毎にログを出力してしまえば、
ログローテーションの必要はない。でも、過去ログ消去はされないんじゃないかな。
マクロやテンプレでsyslog-ngを使い倒す(1/3) - @IT
syslog-ngでは設定ファイル「syslog-ng.conf」にマクロを用いることができます。マクロで指定された個所は、あらかじめ定義された規則に従って置換されます。

にわか鯖管のメモ - syslog-ng で一歩進んだログ管理
syslog-ngのマクロ機能を使い、ログの出力を制御しているので、ログローテーションする必要がない。
よって、syslogのログローテーション設定(logrotate)を削除する。



結局のところ、syslog-ngでログローテーションするといっても、
圧縮はできないし、古いファイルの削除もできない。
しかも、一番新しいログを参照するときも日にちを打たなきゃいけないのがめんどくさい。
ので、2の方法でいくことにする。
@IT:システム管理の基礎 syslogdの設定をマスターしよう(3/3)
syslogdの動作中にファイルを移動すると、syslogdは出力すべきログファイルを見失ってしまうため、syslogdにHUPシグナルを送って設定を再読み込みさせている

基本的に、/etc/logrotate.d/内のファイルで指定していることは、ログファイルのパスとログローテーション後の操作。
syslogの場合は、ログローテーション後に再起動。つまり、次のリンクみたいな感じでもOK。
syslog-ngのインストールと設定、syslogからの移行 - くわぞうメモ
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron /var/log/syslog-ng.log { sharedscripts postrotate /etc/rc.d/init.d/syslog-ng reload > /dev/null 2>&1 #/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript

marutama用とnmtc用それぞれのファイルを作成。
後日見てみよう。

0 件のコメント:

コメントを投稿