Logrotate es un software preinstalado en la mayoría de las distribuciones de Linux, que le permite administrar el guardado y la organización a largo plazo de los archivos de registro.
Las aplicaciones del sistema a menudo registran un registro de las operaciones o problemas del disco. Si no se eliminan periódicamente, estos archivos pueden aumentar de tamaño, llenar el disco y provocar errores de funcionamiento.
Logrotate es la solución más común para comprobar periódicamente los archivos de registro y gestionar automáticamente su rotación, compresión y eliminación cuando se supera un determinado tamaño y/o antigüedad.
Configuraciones básicas
Logrotate permite definir algunos parámetros básicos que serán utilizados por todas las configuraciones posteriores del archivo en la ruta /etc/logrotate.conf:
# Set a weekly rotation
weekly
# Set the number of rotations to save
rotate 4
# make new log file
create
# Include all configurations files
include /etc/logrotate.d
En este extracto de logrotate.conf, además de aplicar todos los parámetros descritos anteriormente, también se recomienda leer todas las configuraciones presentes en el directorio /etc/logrotate.d. Al hacerlo, puede dividir cada configuración por aplicación y/o contexto.
Las configuraciones de Logrotate definen un conjunto de reglas para 1 o más archivos:
[FILE] [FILE?] [FILE?] {
[SETTINGS]
}
Un ejemplo clásico es el de la configuración de /var/log/messages:
/var/log/messages {
# Save 5 rotations
rotate 5
# Rotating files every week
weekly
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
En el ejemplo anterior, solo se tiene en cuenta el archivo de mensajes. . y su rotación se establece cada semana, p a un máximo de 5. Por lo tanto, al final de la quinta rotación, los archivos de registro:
-rw-r----- 1 root adm 1215 Jul 29 06:47 messages
-rw-r----- 1 root adm 3895 Jul 28 06:49 messages.1
-rw-r----- 1 root adm 454 Jul 21 06:37 messages.2.gz
-rw-r----- 1 root adm 506 Jul 15 06:40 messages.3.gz
-rw-r----- 1 root adm 456 Jul 7 06:41 messages.4.gz
Algunas de las configuraciones más importantes son:
diario, mensual, semanal, anual:indica con qué frecuencia rotar el archivo de registro
comprimir, nocomprimir:comprimir o no rotaciones de archivos antiguos
maxage:Después de cuántos días se eliminan las rotaciones antiguas
tamaño:establece la rotación solo si los archivos indicados son más grandes que el tamaño especificado. Se pueden usar sufijos para indicar el formato del tamaño (por ejemplo, "k" para kilobytes, "M" para megabytes)
rotate:número de registros rotados que deben guardarse antes de eliminarse de forma permanente. Si se establece en 0, los archivos de registro se borrarán sin rotarlos.
En caso de que desee establecer las mismas reglas para varios archivos, puede agregar varias rutas, separándolas con una coma. Por ejemplo:
/var/log/custom_log, /var/log/alternative_log_file, /var/log/another_log {
…
}
Esta configuración se usará para el archivo de registro personalizado, el archivo de registro alternativo y otro_registro.
Alternativamente, puede usar máscaras de archivo como:
/var/custom/logs/*, /var/log/custom_log {
# This configuration will rotate all the files in the directory.
# /var/custom/logs/* e il file /var/log/custom_log
...
}
Uso de la configuración de fecha y texto
La configuración dateext le permite agregar la fecha de rotación al nombre del archivo, para que los datos de los registros se puedan reconocer fácilmente.
/var/log/custom.log {
size 100M
dateext
rotate 3
compress
maxage 100
}
La configuración indicada arriba archivará el archivo custom.log tan pronto como alcance los 100M, hasta un máximo de 3 veces o después de 100 días. A través de la opción de compresión, el archivo archivado también se comprimirá en formato gzip.
Una vez rotados, los nombres de archivo tendrán la fecha de rotación como se muestra a continuación:
# ls /var/log
-rw-r--r-- 1 user user 8980 2019-06-09 22:10 custom.log-20180609.gz
-rwxrwxrwx 1 user user 0 2019-06-09 22:11 custom.log
Registros de correo electrónico
Logrotate le permite ejecutar secuencias de comandos personalizadas cuando ocurren ciertos eventos, como después de cada rotación de registro, utilizando las palabras clave postrotate / endscript.
Un posible uso podría ser enviar los registros por correo electrónico al completar la rotación. Para continuar, primero, cree un script para enviar los archivos a su dirección de correo electrónico:
#!/bin/bash
# Get all logs
tar -cvf /tmp/logpack.tar /var/log/messages*
# Send logs as attachment
echo "Log" | mail -s "log" [email protected] -A /tmp/logpack.tar
Guarde el archivo anterior en su directorio de inicio, por ejemplo /home/map.com username_s//endend.sh y asegúrese de habilitar los permisos necesarios a través de:
# sudo chmod u+x /home/user/sendlog.sh
Ahora, edite el archivo de configuración logrotate de la siguiente manera:
/var/log/messages {
...
postrotate
…
/home/user/sendlog.sh
endscript
}
Guarde la configuración para aplicar los cambios.
Una vez completado, recibirá un correo electrónico con el archivo de registro descrito anteriormente en cada rotación de registro.