Con el tiempo noté algunos registros /var/log
como auth
, kern
y se messages
estaban volviendo enormes. Hice logrotate
entradas para ellos:
$ cat /etc/logrotate.d/auth.log
/var/log/kern.log {
rotate 5
daily
}
$ cat /etc/logrotate.d/kern.log
/var/log/kern.log {
rotate 5
daily
}
$ cat /etc/logrotate.d/messages
/var/log/messages {
rotate 5
daily
postrotate
/bin/killall -HUP syslogd
endscript
}
También tengo la compress
opción habilitada:
$ grep compress /etc/logrotate.conf
# uncomment this if you want your log files compressed
compress
Esto funciona muy bien para auth.log
, kern.log
y para otros, lo que significa que cada uno de esos registros se comprime y gira, con los últimos 5 días de registros retenidos. /var/log/messages
sin embargo, no se está comprimiendo, lo que resulta en más de 5 días de registros:
$ ls /var/log/messages*
/var/log/messages /var/log/messages-20100213
/var/log/messages-20100201 /var/log/messages-20100214
/var/log/messages-20100202 /var/log/messages-20100215
/var/log/messages-20100203 /var/log/messages-20100216
/var/log/messages-20100204 /var/log/messages-20100217
/var/log/messages-20100205 /var/log/messages-20100218
/var/log/messages-20100206 /var/log/messages-20100219
/var/log/messages-20100207 /var/log/messages-20100220
/var/log/messages-20100208 /var/log/messages-20100221
/var/log/messages-20100209 /var/log/messages-20100222
/var/log/messages-20100210 /var/log/messages-20100223
/var/log/messages-20100211 /var/log/messages-20100224
/var/log/messages-20100212
Como se explica en otra logrotate
pregunta en ServerFault , los registros antiguos (muy probablemente) no se eliminan porque las terminaciones de los archivos son diferentes para cada archivo. Esto parece ser porque los archivos no se están comprimiendo.
¿Qué puedo hacer para /var/log/messages
comprimir y rotar con los últimos 5 días de registros retenidos al igual que todos mis otros archivos de registro? ¿Qué me estoy perdiendo?
EDITAR 1 : información adicional según lo solicitado en las primeras dos respuestas.
Estoy ejecutando Gentoo Linux. Mi /etc/logrotate.conf
archivo:
$ cat /etc/logrotate.conf
# $Header: /var/cvsroot/gentoo-x86/app-admin/logrotate/files/logrotate.conf,v 1.3 2008/12/24 20:49:10 dang Exp $
#
# Logrotate default configuration file for Gentoo Linux
#
# See "man logrotate" for details
# rotate log files weekly
weekly
#daily
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
compress
# packages can drop log rotation information into this directory
include /etc/logrotate.d
notifempty
nomail
noolddir
# no packages own lastlog or wtmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
/etc/logrotate.d
contiene mis archivos de configuración personalizados como se mencionó anteriormente junto con las configuraciones para mysql, rsync, etc. instaladas por esos paquetes.
Mi raíz crontab
está vacía:
$ sudo crontab -l
no crontab for root
Verifiqué todo /etc/cron.{daily,hourly,monthly,weekly}
para cualquier cosa relacionada con syslog, y hay un script que gira /var/log/syslog
y /var/log/auth.log
.
A continuación, hizo un /var/log/messages
-sólo logrotate
archivo de configuración según lo sugerido por CarpeNoctem:
$ cat logrotate-messages
weekly
rotate 4
create
dateext
compress
notifempty
nomail
noolddir
/var/log/messages {
rotate 5
daily
postrotate
/bin/killall -HUP syslogd
endscript
}
Luego corrí logrotate
manualmente:
$ logrotate -d logrotate-messages -f
reading config file logrotate-messages
reading config info for /var/log/messages
Handling 1 logs
rotating pattern: /var/log/messages forced from command line (5 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/messages
log needs rotating
rotating log /var/log/messages, log->rotateCount is 5
dateext suffix '-20100224'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
renaming /var/log/messages to /var/log/messages-20100224
creating new /var/log/messages mode = 0644 uid = 0 gid = 0
running postrotate script
running script with arg /var/log/messages : "
/bin/killall -HUP syslogd
"
compressing log with: /bin/gzip
$ which gzip
/bin/gzip
$ file /bin/gzip
/bin/gzip: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
Según el registro anterior, logrotate
comprimí el registro con / bin / gzip, pero no veo un archivo de mensajes comprimido /var/log
. Además, falló la búsqueda de archivos rotados antiguos.
EDITAR 2 : agregar salida de depuración de logrotate
ejecución después de agregar un .gz
sufijo a los /var/log/message-*
archivos antiguos .
Comenzamos con:
$ ls /var/log/messages*
/var/log/messages /var/log/messages-20100222.gz
/var/log/messages-20100219.gz /var/log/messages-20100223.gz
/var/log/messages-20100220.gz /var/log/messages-20100224.gz
/var/log/messages-20100221.gz
Luego, ejecute logrotate
con nuestro archivo de configuración personalizado:
$ logrotate -d logrotate-messages -f
reading config file logrotate-messages
reading config info for /var/log/messages
Handling 1 logs
rotating pattern: /var/log/messages forced from command line (5 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/messages
log needs rotating
rotating log /var/log/messages, log->rotateCount is 5
dateext suffix '-20100224'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
removing /var/log/messages-20100219.gz
removing old log /var/log/messages-20100219.gz
destination /var/log/messages-20100224.gz already exists, skipping rotation
Esta vez, logrotate
el globo tiene éxito y encuentra el sexto archivo de registro comprimido, con la intención de eliminarlo. El archivo no se elimina realmente; Supongo que es porque estamos corriendo en modo de depuración.
Tengo curiosidad por saber si habilitar la delaycompress
opción para /var/log/messages
ayudará. Lo habilité y comprobaré los resultados a la mañana siguiente.