フォルダの下に/var/log/httpd
膨大な容量のファイルが作成されました!
この問題を処理できる古いファイルを自動的に圧縮するには、どのソリューションを使用できますかlogrotate
?
それでは、そのフォルダの下の古いファイルを圧縮するようにLinuxシステムをどのように設定できますか?
2番目の質問:これらのファイルはどういう意味ですか?
13:16:50 root@BillGates-Machine:/var/log/httpd # ls -ltr
-rw-r--r-- 1 root root 7612 Jan 30 05:51 ssl_error_log-20160131
-rw-r--r-- 1 root root 16170199 Jan 31 03:29 ssl_request_log-20160131
-rw-r--r-- 1 root root 14677353 Jan 31 03:29 ssl_access_log-20160131
-rw-r--r-- 1 root root 425621646 Jan 31 03:38 access_log-20160131
-rw-r--r-- 1 root root 77267 Jan 31 03:38 error_log-20160131
-rw-r--r-- 1 root root 11233 Feb 7 03:43 ssl_error_log-20160207
-rw-r--r-- 1 root root 16398688 Feb 7 03:44 ssl_request_log-20160207
-rw-r--r-- 1 root root 14867381 Feb 7 03:44 ssl_access_log-20160207
-rw-r--r-- 1 root root 471057664 Feb 7 03:48 access_log-20160207
-rw-r--r-- 1 root root 101611 Feb 7 03:48 error_log-20160207
答え1
logrotate
回転するファイルを圧縮することは可能ですが、アプリケーションによって作成されたログファイル名が静的でない場合(ここでのようにファイル名に日付サフィックスがあるため)、正しく機能しません。これは、日付サフィックスを含めないように(つまり、書き込みのみを行うために)HTTPサーバー(Apache?)を再構成する場合にaccess_log
機能します。error_log
logrotate
以下は、このように構成する方法を示すサンプルソリューションです。
これは、ログファイルの命名スキームを維持したい場合でも解決策があるもう1つの関連質問です。logrotateを使用せずに操作を実行するカスタムスクリプトを使用します。
簡単に言えば、これらのファイルの意味は次のとおりです。
- access_log:一般的なHTTPリクエストの成功
- error_log:エラーが発生した純粋なHTTPリクエスト
- ssl_request_log:成功したHTTPSリクエスト
- ssl_error_log:エラーが発生したHTTPSリクエスト
(もちろん、構成がこのロジックから外れる可能性があります)
答え2
ログ回転を使用できます。
アプリケーション構成設定の例はdpkg(Debian Package Management System)です。/etc/logrotate.d/dpkg
このファイルのエントリの1つは次のとおりです。
/var/log/dpkg.log {
monthly
size 500M
rotate 12
compress
delaycompress
missingok
notifempty
create 644 root root
}
地図時間ここ。
答え3
sudo crontab -e
cronに圧縮ジョブを追加します。ルートcrontab()に次の行を追加します。
0 0 * * * tar -czf /var/log/httpd_backup_`date`.tar.gz /var/log/httpd && rm -rf /var/log/httpd/*
このコマンドは、古いログでtarアーカイブを生成し、既存のログを削除します。仕事は毎日0時に始まります。