コンテキスト
実行中に多くの情報を記録するために正しく設計されていないJavaアプリケーションを使用する必要があります。標準使用量では、1時間あたり100MBのログが生成されます。
履歴ログは不要で、現在のlogrotateユーティリティが十分に頻繁に実行されていないため、これに従えないようです。このアプリケーションはプライベートソースで、ログサイズは約36MBです。
私のLinuxディストリビューションはRHEL7です。
質問
ログを圧縮して回転させ、無駄なスペースを減らしたいです。
- アプリケーションがログを新しいファイルに分割したため、ディレクトリに新しく作成されたファイルを自動的に圧縮できますか?
- Assessmentor-cli.X.log形式のすべてのファイルを自動的に削除できますか?ここで、X は 5 より大きい数値です (たとえば、5 つの最新ログのみを保持)。
logrotateファイルを使用した試みは次のとおりです。
# cat /etc/logrotate.d/cis_assessor
/usr/share/foreman-proxy/Ansible/CIS/audit/Assessor-CLI-4.0.2/logs/assessor-cli.log {
missingok
notifempty
compress
rotate 5
size 30M
このログローテーション操作が実際に有効になるには、サイズが30 MBから36 MBの間のログをキャプチャする必要があります。これは10秒かかります。だからlogrotateなしでファイルを圧縮して削除する手動パスについて尋ねることです。
答え1
アプリケーションがログを新しいファイルに分割したため、ディレクトリに新しく作成されたファイルを自動的に圧縮できますか?
はい。新しく作成されたファイルを見つけるために新しいファイルのディレクトリを監視できるものを使用してください(良いentr
)
したがって、次のlogrotate構成を作成します(/etc/logrotate.d/newlogrotateconf
)。
/usr/share/foreman-proxy/Ansible/CIS/audit/Assessor-CLI-4.0.2/logs/assessor-cli.log {
missingok
notifempty
compress
rotate 5
}
その後、entr
ディレクトリを繰り返して/logrotate
にバインドします。inotify
epoll
echo -n /usr/share/foreman-proxy/Ansible/CIS/audit/Assessor-CLI-4.0.2/logs/
| ./entr -dnc logrotate --force /etc/logrotate.d/newlogrotateconf