내 로그 회전 구성은 다음과 같습니다.
/var/log/glusterfs/*.log /var/log/glusterfs/bricks/*.log /var/log/glusterfs/bricks/*.log.* {
sharedscripts
daily
rotate 3
copytruncate
size 100M
missingok
compress
delaycompress
ifempty
postrotate
/usr/bin/killall -HUP glusterfs > /dev/null 2>&1 || true
/usr/bin/killall -HUP glusterd > /dev/null 2>&1 || true
endscript
}
디렉토리는 다음과 같습니다.
username@server:/var/log/glusterfs/bricks$ ll
total 405980
-rw------- 1 root root 0 Dec 23 00:05 be-data.log
-rw------- 1 root root 1 Dec 29 09:38 be.log.1
-rw------- 1 root root 0 Dec 25 11:24 nl.log
-rw------- 1 root root 0 Dec 29 09:49 nl.log.1.1
-rw------- 1 root root 0 Dec 29 09:50 nl.log.1.1.1
-rw------- 1 root root 0 Dec 29 09:55 nl.log.1.1.1.1
-rw------- 1 root root 0 Dec 29 09:55 nl.log.1.1.1.1.1
-rw------- 1 root root 0 Dec 29 09:55 nl.log.1.1.1.1.1.1
-rw------- 1 root root 0 Dec 29 09:55 nl.log.1.1.1.1.1.1.1
-rw------- 1 root root 0 Dec 29 09:55 nl.log.1.1.1.1.1.1.1.1
-rw------- 1 root root 0 Dec 29 10:08 nl.log.1.1.1.1.1.1.1.1.1
-rw------- 1 root root 0 Dec 29 10:08 nl.log.1.1.1.1.1.1.1.1.1.1
-rw------- 1 root root 0 Dec 29 10:08 nl.log.1.1.1.1.1.1.1.1.1.1.1
-rw------- 1 root root 368402432 Dec 29 10:08 nl.log.1.1.1.1.1.1.1.1.1.1.1.1
-rw------- 1 root root 610304 Dec 23 00:05 bo.log.1
-rw------- 1 root root 860160 Dec 23 00:05 bricks.log.1
-rw------- 1 root root 589824 Dec 23 00:05 other.log.1
내가 볼 수 있는 것:
- 로그는 압축되지 않습니다.
- 로그가 100MB보다 큼
- 계산이 작동하지 않습니다
- 빈 로그 파일이 존재하며 빈 로그 파일이 순환되는 것을 원하지 않습니다.
내 logrotate 구성은 위의 모든 문제를 어떻게 해결해야 합니까?
답변1
구성 파일에서 디렉터리의 로그 파일에 대해 두 가지 모드를 지정합니다 /var/log/glusterfs/bricks
.
*.log
*.log.*
이러한 패턴 중 두 번째 패턴은 회전된 로그 파일과 일치합니다. 이것이 .1
끝없이 접미사가 붙는 파일을 얻는 이유입니다.
로그 파일은 delaycompress
구성에서 압축했기 때문에 압축되지 않습니다. 다음 회전에서는 압축됩니다. 첫 번째 문제(위의 두 번째 패턴으로 인해 이미 회전된 로그의 회전)는 모든 회전이 "첫 번째" 회전이므로 실제로 압축을 비활성화합니다.
로그 파일이 100M보다 크면 구성에 따라 순환됩니다. 이보다 더 큰 파일이 있습니다. 위의 두 번째 로그 파일 패턴과 관련된 문제로 인해 모든 호출에서 회전되고 압축되지 않습니다.
빈 로그 파일이 있습니다. 이는 위의 잘못된 로그 파일 일치 패턴의 또 다른 효과일 뿐입니다. 로그 파일이 회전되면 name-of-file.log.1
원본 파일 에 복사되고 name-of-file.log
잘립니다("비워짐"). 또한 *.log.*
구성의 패턴 으로 인해 name-of-file.log.1
다음 회전 시 파일이 복사되고 원본 파일은 잘립니다.name-of-file.log.1.1
name-of-file.log.1
이 모든 것이 잘 작동하지만 로그 파일 모드는 실제 로그 파일뿐만 아니라 회전된 로그 파일도 가져오기 때문에 결국 혼란을 겪게 됩니다.
답변2
이번 주에 logrotate 맨페이지를 무료로 확인해 보세요!
delaycompress
Postpone compression of the previous log file to the next rota‐
tion cycle. This only has effect when used in combination with
compress. It can be used when some program cannot be told to
close its logfile and thus might continue writing to the previ‐
ous log file for some time.
size size
Log files are rotated only if they grow bigger then size bytes.
If size is followed by k, the size is assumed to be in kilo‐
bytes. If the M is used, the size is in megabytes, and if G is
used, the size is in gigabytes. So size 100, size 100k, size
100M and size 100G are all valid.
ifempty
Rotate the log file even if it is empty, overriding the
notifempty option (ifempty is the default).