ログファイルの肥大化、喪失を防ぐ

LINEで送る
Pocket

ログファイルは、システムの状態をチェックして監視するためには重要なデータです。しかしシステムの運用期間が長ければ長いほど、ログファイルは肥大化していきます。知らない間にファイルサイズが大きくなっていき、ディスク容量が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週間の世代管理) など適宜設定する事が有効です。

LINEで送る
Pocket

  • このエントリーをはてなブックマークに追加

コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください