
私たちのサービスの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ファイルでグローバルにアクティブになり、その行のコメントを外したためだと思います。問題は次のとおりです。
ログファイルの回転間に時間遅延や間隔がありますか?debug.logからdebug.log-20190315へ)と圧縮された場合(debug.log-20190315からdebug.log-20190315.gzへ)?
遅延がある場合は、
compress
ログファイルがdebug.logからdebug.log-20190315に回転された直後に圧縮されることがサービスの特定のログローテーション設定ファイルに記載されていますか?
delaycompress
logrotate設定ファイルに言及がありません。
(背景:Splunkインデクサーは、このサービスでdebug.log-2019xxxxファイルにインデックスを付けるようです。私たちは*.gz$
ブラックリストに登録し、debug.log$
Splunkに移動することを禁止しましたが、debug.log-2019xxxxファイルが数秒または数分間存在するようです*.gz$
。に渡されます。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