로그 파일 회전 및 압축 간격

로그 파일 회전 및 압축 간격

우리 서비스의 logrotate 구성은 다음과 같습니다.

{
    rotate 30
    create 644 root syslog
    missingok
    notifempty
    daily
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript }

compress구성에 언급되지 않은 경우에도 로그 파일은 각 회전 후에 gzip으로 압축됩니다. 나는 이것이 compress/etc/logrotate.conf 파일에서 전역적으로 활성화하여 해당 행의 주석 처리를 제거했기 때문이라고 생각합니다. 문제는 다음과 같습니다

  1. 로그 파일 회전 사이에 시간 지연이나 간격이 있습니까?(debug.log에서 debug.log-20190315로) 및 압축된 경우(debug.log-20190315에서 debug.log-20190315.gz로)?

  2. 지연이 있는 경우 compress로그 파일이 debug.log에서 debug.log-20190315로 회전된 후 즉시 압축된다는 것이 서비스의 특정 로그 회전 구성 파일에 언급되어 있습니까?

delaycompresslogrotate 구성 파일에 언급이 없습니다 .

(배경: Splunk 인덱서는 이 서비스에서 debug.log-2019xxxx 파일을 인덱싱하는 것으로 보입니다. 우리는 *.gz$블랙리스트에 등록하고 debug.log$Splunk로 이동하는 것을 금지했지만 debug.log-2019xxxx 파일이 몇 초 또는 몇 분 동안 존재하는 것 같아서 해당 시간 동안 블랙리스트에 등록된 정규식 공식과 관련되어 있고 *.gz$일치하지 않기 때문에 Splunk로 전달됩니다. debug.log$. 블랙리스트에 추가하면 이 문제를 해결할 수 있다는 것을 알고 있지만 debug.log-[0-9]*xxxxxx.debug.log-20190315가 존재하는 원인이 무엇인지 알고 싶습니다.)

답변1

압축 단계에는 gzip제한된 시간이 걸리므로 압축 프로세스가 진행되는 동안 원본 파일을 볼 수 있는 기회가 있습니다. 원본 파일의 크기가 충분히 크면 압축이 완료되기까지 꽤 오랜 시간 동안 원본 파일이 존재할 수 있습니다. 압축에 필요한 시간은 gzip에 전달된 설정(압축 속도 및 수준)과 파일의 압축률에 따라 달라집니다. gzip원본 파일은 압축 프로세스가 완료된 후에만 삭제됩니다.

유효성 검사를 위한 작은 테스트로 1GiB 크기의 파일 /dev/urandom과 1GiB 크기의 파일을 각각 생성 /dev/zero하고 압축하는 데 걸리는 시간을 테스트했습니다.

임의의 데이터가 포함된 파일은 약 2분 23초가 걸립니다.

[root@testvm1 ~]# time gzip testfile-random.txt

real    2m27.417s
user    2m22.172s
sys     0m2.839s

그리고 제로 파일에는 약 29초가 걸렸습니다.

[root@testvm1 ~]# time gzip testfile-zero.txt

real    0m28.930s
user    0m27.453s
sys     0m0.989s

압축하면 두 경우 모두 원본 파일이 표시됩니다.

[root@testvm1 ~]# ls -lh testfile-random.txt*
-rw-r--r--. 1 root root 1.0G Mar 15 17:49 testfile-random.txt
-rw-------. 1 root root  75M Mar 15 17:59 testfile-random.txt.gz

[root@testvm1 ~]# ls -lh testfile-zero.txt*
-rw-r--r--. 1 root root 1.0G Mar 15 18:04 testfile-zero.txt
-rw-------. 1 root root 992K Mar 15 18:05 testfile-zero.txt.gz

관련 정보