var/log/remots/*/*
다음 logrotate 규칙을 사용하여 파일을 압축해야 합니다.
/var/log/remots/*/* {
rotate 178
daily
maxage 178
compress
}
에 누워있다 /etc/logrotate.d/remots
.
나는 또한 다음과 같은 스크립트를 작성했습니다.
cp rsyslog.conf /etc/rsyslog.conf
cp 10-remot.conf /etc/rsyslog.d/10-remot.conf
cp remots /etc/logrotate.d/remots
./rpgp.sh perms.txt
service rsyslog restart
그러나 강제로 logrotate를 실행하면 sudo logrotate -d --force /etc/logrotate.d/remots
로그는 여전히 압축되지 않은 일반 텍스트입니다. 출력은 많은 메시지와 유사합니다.
renaming /var/log/remots/GSX/2019-03-25.2.gz to /var/log/remots/GSX/2019-03-25.3.gz (rotatecount 178, logstart 1, i 2)
renaming /var/log/remots/GSX/2019-03-25.1.gz to /var/log/remots/GSX/2019-03-25.2.gz (rotatecount 178, logstart 1, i 1),
renaming /var/log/remots/GSX/2019-03-25.0.gz to /var/log/remots/GSX/2019-03-25.1.gz (rotatecount 178, logstart 1, i 0),
마침내
/var/log/remots/GSX/2019-03-25.179.gz doesnt' exist -- wont't you try to dispose of it
renaming /var/log/remots/GSX/2019-03-25 to /var/log/remots/GSX(2019-03-25.1
compressing log with: /bin/gzip
PD:10-remots.conf는 다음과 같습니다.
$template GuardaRemots, "/var/log/remots/%HOSTNAME%/%timegenerated:1:10:date-rfc3339%"
:source, !isequal, "localhost" -? GuardaRemots
rsyslog.conf는 단순히 UDP 포트 514에서 수신하도록 구성됩니다.
답변1
내가 본 것에서 logrotate가 혼란스러워지고 있습니다. 첫째, 이름 패턴을 더욱 엄격하게 관리해야 합니다. /var/log/remots/*/*
회전하는 대신 회전해야 합니다.
/var/log/remots/*/*.log {
rotate 178
daily
maxage 178
compress
}
구성을 변경할 때 /var/lib/logrotate/status
.delete 파일의 모든 항목을 확인해야 합니다 .*gz
.
자체 로그를 회전하는 프로그램과 logrotate를 혼합하는 것은 덜 일반적입니다. 오래된 로그 파일에 쓰도록 rsyslog를 구성했습니다. 정적 파일 이름을 사용하고 logrotate가 날짜를 추가하도록 허용하는 것이 더 일반적입니다. 다른 사람들도 동일한 유형의 설정에 문제가 있음을 확인했습니다. https://stackoverflow.com/questions/8962477/logrotate-files-with-date-in-the-file-name
이 기능을 구성하는 더 쉬운 방법은 "remots"(rsyslog) 로그를 정적 위치에 기록하는 것입니다. 예를 들면 다음과 같습니다.
$template GuardaRemots, "/var/log/remots/%HOSTNAME%.log"
:source, !isequal, "localhost" -? GuardaRemots
그런 다음 회전합니다.
/var/log/remots/*.log {
rotate 178
daily
maxage 178
compress
}
Logrotate는 회전할 때 자동으로 날짜를 추가합니다.