문맥
실행하는 동안 많은 정보를 기록하는 제대로 설계되지 않은 Java 애플리케이션을 사용해야 합니다. 표준 사용량에서는 시간당 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
이 로그 회전 작업이 실제로 효과적이려면 크기가 30MB에서 36MB 사이인 로그를 캡처해야 하며, 이 작업은 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