久しぶりに Linux 触りました。 (Linuxサーバ完全に放置気味です。)
で、FTPのログのチェックをしようとしたんですが、過去1カ月分しかありません。
で、どうやらログローテーションの logrotate で1週間毎の4回という設定になってったっぽいです。
ということで、毎日の60回に設定を変更しました。(やっぱり日別のほうが見やすいですしね。)
変更前:
$ vi /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
(省略)
変更後:
$ vi /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
daily
# keep 4 weeks worth of backlogs
rotate 60
(省略)
それから、Apache と vsftpd のログについては、vsftpd.log.1 みたいな感じでなく日付を含むようにしたほうが後々管理しやすいので、その方法をググると、社内SE徒然備忘録:apacheのlogrotateにて発見。
dateextを加えてやるといいようです。
下記のように Apache と vsftpd の個別の logrotate 設定ファイルに dateext を追加しました。
また、ログファイルが空でもローテーションするようにします。
# vi /etc/logrotate.d/vsftpd.log
/var/log/vsftpd.log {
# ftpd doesn't handle SIGHUP properly
nocompress
missingok
dateext →ログファイルに日付入れる。
}
# vi /etc/logrotate.d/httpd
/var/log/httpd/*log {
missingok
ifempty →ログファイルが空ならローテーションするために追加。
#notifempty →「ログファイルが空ならローテーションしない。」設定なのでコメントアウト。
sharedscripts
dateext →ログファイルに日付入れる。
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}
これで、
# /usr/sbin/logrotate /etc/logrotate.conf
(もしくは /usr/sbin/logrotate /etc/logrotate.d/vsftpd.log とか)
を実行すると、ちゃんとファイル名が vsftpd.log-20090814 となってました。
/var/lib/logrotate.status
↑のファイルで、最後にローテーションされたログファイルの日付の確認できるようです。
あと、ついでに vsftpd のログの設定も見直しておきました。
今までは、vsftpd.log に wu-ftpd 相当のフォーマットで保存してきましたが、vsftpd オリジナルのログのほうが細かいので、両方を記録させることに。
ということで、 /etc/vsftpd/vsftpd.conf で下記のように設定を変更しました。
vsftpd_log_file=/var/log/vsftpd.log →vsftpd標準形式のログ
xferlog_file=/var/log/xferlog
xferlog_std_format=Yes →xferlog の形式を wu-ftpd 相当のフォーマットに。
#log_ftp_protocol=Yes →これが有効だと全てのやりとりをログに残すけど見にくくなったのでやっぱり無効にした。
dual_log_enable=Yes →sftpd オリジナルのログとwu-ftpd 相当のフォーマットのログの両方を採取可能
use_localtime=YES →デフォルトはUTC時刻のため、時刻をローカルタイム(JTC)にする。
参考: