logrotate(ログ管理の変更)

もともと玄箱のOS:MontaVistaLinuxはNAS用にメルコ(現バッファロー)様がカスタマイズしたものです。
なので、サーバー用途にはいろいろ不都合な点があったりします。
たとえば、このログ管理方法。
純正の設定では「1日ごとにローテーションして、過去1日分のみ保存」という、
これまた男らしい設定になってます。

このままでは何かあったときにちょっと不都合なので、
保存期間やローテーションタイミングを変更していきます。
「MontaVistaLinux」
組み込み用のOSで内容的にはdebianっぽいLinuxです。
メルコがカスタマイズした(LinkStation用)のを急造仕様で玄箱用にしてあるらしいです。

まぁ、私がLinuxのディストリビュージョンのことを話すのはナンセンスってことで・・・m(_.._)m

やること一覧
	・logrotateについてlogrotateの設定ファイルを編集Stray Penguin - Linux Memo (logrotate)残骸整理



logrotateについて

ログをローテーションするソフト(?)
基本的に単体では使われず、cronというスケジュール管理デーモンに呼び出されて初めて動作する。
なので、動作タイミングについてはcronの設定による。
ちなみに玄箱で有効になっているcronの動作タイミングは、

のみ・・・流石、玄箱。

さらに、logrotateの設定ファイル(logrotate.conf)には、
と書いてある。

話をまとめると、
玄箱ではログを毎日4時22分にローテーションして、
毎日ログを更新し、
過去ログは圧縮して保存するけど、
前日以外のログは削除する。
対象ファイルに関しては/etc/logrotate.dを見て判断する。
ということになるらしい。
「前日以外のログは削除」
ログの意味無いねぇ・・・1日だけじゃ。
流石に3ヶ月先までのログを・・・とまでは言わないけど、これじゃ使えないよ。
っていうか、毎日ログを見るわけじゃないからねぇ・・・

まぁ、元がNASだから仕方ないっちゃ仕方ないけど・・・

logrotateの設定ファイルを編集

ということで、ログローテーションの管理は/etc/logrotate.dで行っている。
なので、その中の設定ファイルを弄る。

まぁ、参考サイトを参照して書き換えるだけですが・・・

弄る方針

で整理する。

2005年8月時点での/etc/logrotate.d内の設定ファイルと内容
	httpd
	┃/opt/apache2/logs/*_log {
	┃    weekly
	┃    rotate 4
	┃    missingok
	┃#     notifempty
	┃    sharedscripts
	┃    copytruncate
	┃    delaycompress
	┃    olddir /opt/apache2/logs/old
	┃    postrotate
	┃        /etc/init.d/httpd restart
	┃#         EXT=`date +%Y%m%d`
	┃#         for f in $1;
	┃#             do mv $f.1 $f.$EXT;
	┃#         done
	┃    endscript
	┃}

	proftpd
	┃/opt/proftpd/var/*.log {
	┃    weekly
	┃    rotate 4
	┃    missingok
	┃#     notifempty
	┃    sharedscripts
	┃    copytruncate
	┃    delaycompress
	┃    olddir /opt/proftpd/var/old
	┃#     postrotate
	┃# 	/sbin/killall -s HUP syslogd
	┃#     endscript
	┃}

	samba
	┃/var/log/samba/samba.log {
	┃    notifempty
	┃    missingok
	┃    sharedscripts
	┃    copytruncate
	┃    postrotate
	┃	/sbin/killall -s HUP smbd
	┃    endscript
	┃}
	┃
	┃/var/log/log.smbd /var/log/log.nmbd {
	┃    rotate 7
	┃    notifempty
	┃    missingok
	┃    delaycompress
	┃    olddir /var/log/old
	┃    sharedscripts
	┃    copytruncate
	┃    postrotate
	┃	/sbin/killall -s HUP smbd
	┃	/sbin/killall -s HUP nmbd
	┃    endscript
	┃}

	syslog
	┃/var/log/messages /var/log/secure /var/log/spooler /var/log/boot.log /var/log/cron {
	┃    rotate 7
	┃    notifempty
	┃    delaycompress
	┃    olddir /var/log/old
	┃    sharedscripts
	┃    postrotate
	┃	/sbin/killall -s HUP syslogd
	┃    endscript
	┃}

	thttpd
	┃/var/log/thttpd.log {
	┃    rotate 7
	┃    notifempty
	┃    missingok
	┃    delaycompress
	┃    olddir /var/log/old
	┃    postrotate
	┃	/sbin/killall -s HUP thttpd
	┃    endscript
	┃}

	weekly
	┃/var/log/sshd.log /var/log/freshclam.log /var/log/auth.log /var/log/maillog {
	┃    weekly
	┃    rotate 4
	┃    missingok
	┃    notifempty
	┃    sharedscripts
	┃    copytruncate
	┃    delaycompress
	┃    olddir /var/log/old
	┃    postrotate
	┃	/sbin/killall -s HUP syslogd
	┃    endscript
	┃}
「弄る方針」
プロバイダなどでは最低3ヶ月のログ保存が法律によって義務付けられています。
まぁ、民間のって言うか、個人の鯖にどの程度を要求するか?までは知りませんが・・・
なので、どのくらい保存する、圧縮の有無、ログの保管場所などは各個人の考え一つです。

まぁ、私の場合、PCを1週間以上使わないってことは無い(を)ので、
この程度の保存期間に設定しています。
ログってありすぎても見づらくなりますから、記録量の多いものは周期を短くして置くといいかも。

残骸整理

上記の設定だと過去ログは元の場所の下にoldというディレクトリを作って、そこにまとめている。
まがりなりにも取っていた過去ログ(1日分)も整理する。

[/var/log]/oldを作成

	# cd [/var/log]
	# mkdir old
過去ログを移動
	# mv *.gz ./old/
以上。
「過去ログ」
過去ログと現在のログが一緒の場所にあると確認が楽だけど、リストにしたとき見づらい。
とても、見づらい。非常に見づらい。
だから、過去ログの確認がちょっと不便になるけどoldという別のディレクトリに集めています。

まぁ、過去ログはあんまり見ないけどね(をひ
閲覧にはlessを使うと圧縮ファイルを解凍しなくてもいいので便利ですよ♪


戻るなら押せ!