Logrotate 不刪除壓縮日誌

Logrotate 不刪除壓縮日誌

我有一個運行 rsyslog 和 logrotate 的 CentOS 機器作為我的系統日誌伺服器,用於一大堆網路設備。我已經玩了一段時間了,logrotate/壓縮部分工作正常,但我似乎無法讓它刪除舊的壓縮 .gz 日誌。這是基本設定:

日誌儲存在:/var/log/syslog 中,每個主機根據其 IP 位址或主機名稱建立一個新的子資料夾。我有兩個特別健談的主機,所以我有特定的規則讓它們在 5 GB 之後截斷。這個想法是每天壓縮並開始一個新的日誌,並保留 60 天的日誌。

這是我的配置(其中大部分不是我創建的,但我維護並修改了其中幾個):

貓 /etc/cron.hourly/logrotate

#!/bin/sh`enter code here`
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

貓 /etc/logrotate.d/syslog

/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    compress
    daily
    #delaycompress
    dateext
    missingok
    rotate 60
    maxage 60
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

貓 /etc/logrotate.conf

/var/log/syslog/*/*.log {
daily
rotate 60
maxage 60
compress
}

daily
rotate 60
create
dateext
compress
include /etc/logrotate.d

/var/log/wtmp {
    monthly
    create 0664 root utmp
        minsize 1M
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

# system-specific logs may be also be configured here.
# Specific rule for HOST_A
/var/log/syslog/HOST_A/*.log {
daily
size 5G
rotate 30
maxage 30
compress
}

# Specific rule for HOST_B
/var/log/syslog/HOST_B/*.log {
daily
size 5G
rotate 30
maxage 30
compress
}

這是我的 \var\log\syslog\host_a 資料夾中的範例:

ls /var/log/syslog/HOST_A/ | ls /var/log/syslog/HOST_A/ |廁所-l

104

ls /var/log/syslog/HOST_A/ -lh

-rw------- 1 root root  416M Jun 20 23:59 HOST_A_2018_06_20.log.1.gz
-rw------- 1 root root   64M Jun 20 16:18 HOST_A_2018_06_20.log.2.gz
-rw------- 1 root root  1.5G Jun 21 23:59 HOST_A_2018_06_21.log.1.gz
<many files redacted>
-rw------- 1 root root  1.6G Sep  4 23:59 HOST_A_2018_09_04.log.1.gz
-rw------- 1 root root  1.5G Sep  5 23:59 HOST_A_2018_09_05.log.1.gz
-rw------- 1 root root  7.7G Sep  6 10:58 HOST_A_2018_09_06.log

因此,您可以在上面看到,60 天後它不會刪除舊的存檔 .gz 日誌。它無限期地保留著它們。我必須定期進入並手動刪除舊文件以減小大小。這些文件從 6/20 到 9/6(今天),即 104 天。我確信我配置錯誤,但不確定我缺少什麼。任何幫助,將不勝感激。

答案1

您對日常日誌檔案使用兩種機制,它們不相互合作。

一方面讓 syslog 產生每日文件,另一方面讓 logrotate 輪換文件。 Logrotate 會將每個日常檔案視為一組單獨的唯一檔案(它不認為 HOST_A_2018_09_05.log 與 HOST_A_2018_09_06.log 相關)進行輪換,因此每個模式永遠不會達到 5 個檔案。

最好不要在檔案名稱中包含日期,或讓 syslog 自行修剪舊檔案。

相關內容