ログファイルは、システムの状態をチェックして監視するためには重要なデータです。しかしシステムの運用期間が長ければ長いほど、ログファイルは肥大化していきます。知らない間にファイルサイズが大きくなっていき、ディスク容量が100%になり、サービスが停止して、リモートログインも出来なくなってしまう事もあります。
/var/log ファイルに出力されているログファイルを確認すると、ファイル名-日付、もしくは ファイル名.数字 となっており、ログファイルが履歴管理されている事が分かります。
$ cd /var/log CeuntOSの場合 $ ls messages* messages messages-20160307 messages-20160313 messages-20160321 messages-20160327 Ubuntuの場合 $ ls syslog* syslog syslog.1 syslog.2.gz syslog.3.gz syslog.4.gz syslog.5.gz syslog.6.gz syslog.7.gz
これは、logrotate というログの世代管理を行いファイルのローテーションを行ってくれるサービスが動作している為にログファイルの肥大化を事前に防いでいます。logrotate の設定ファイル logrotate.conf を参照すると、週間隔で4世代(ログの保存期間は約一ヶ月)管理してくれという設定がなされています。
/etc/logrotate.conf
weekly : rotate 4 :
アプリケーション毎の個別設定は、/etc/logrotate.d/ に設定されています。以下は、httpd のlogrotate 設定ファイルを出力していますが、監視対象ファイル名 { オプション} と指定する事によりlogファイルを個別に設定することができます。
$ ls /etc/logrotate.d/ httpd ppp syslog wpa_supplicant yum $ cat /etc/logrotate.d/httpd /var/log/httpd/*log { missingok notifempty sharedscripts delaycompress postrotate /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true endscript } オプションは、logrote のman を参照してください。 $ man logrotate
これらは、デフォルトの設定であってログの出力量はシステムによって異なります。重要のログファイルは世代を多く取ったり、とにかくログの量が多く世代管理が必要ないログなどは、daily でローテションしてrotate 7 (1週間の世代管理) など適宜設定する事が有効です。