Servidor Ubuntu 16.04: Instalar y configurar logrotate
logrotate es una herramienta que reemplaza archivos de registro basados en condiciones de frecuencia o tamaño y gestiona los archivos anteriores almacenándolos, comprimiéndolos o eliminándolos. En Ubuntu, puede gestionar registros que crecen continuamente, pero el momento real del reemplazo depende del programa de ejecución de logrotate y de las condiciones de configuración.
Soporte y preparación para Ubuntu 16.04
El mantenimiento de seguridad general para Ubuntu 16.04 LTS y el mantenimiento de seguridad extendido general (ESM) para Ubuntu Pro han finalizado. Canonical ofrece servicios adicionales Legacy por separado, así que consulte la cobertura y el costo en Guía de soporte de Ubuntu 16.04, y planee actualizar a una versión de Ubuntu compatible si es posible. Los principios básicos a continuación se aplican también a otras versiones, pero el comportamiento detallado puede variar según la versión de logrotate instalada y el calendario de ejecución.
Primero, verifique si está instalado y, si el paquete no está presente en Ubuntu, instálelo. Antes de cambiar la configuración del servidor de producción, asegúrese de verificar los métodos de respaldo y recuperación para la configuración existente y los registros necesarios.
logrotate --version
sudo apt update
sudo apt install logrotate
Verifique la configuración predeterminada y el calendario de ejecución
La configuración global generalmente se encuentra en /etc/logrotate.conf, y se leen las configuraciones individuales si el archivo está configurado para incluir /etc/logrotate.d/. Revise los archivos reales en el servidor. En entornos donde el paquete Apache está instalado, /etc/logrotate.d/apache2 puede existir, pero la ruta del registro y la configuración varían según el entorno de instalación.
cat /etc/logrotate.conf
ls -l /etc/logrotate.d/
cat /etc/logrotate.d/apache2
En sistemas sin archivos de configuración de Apache, el último comando puede fallar. No gestione la misma ruta de registro de manera redundante en dos configuraciones. logrotate no se ejecuta continuamente por sí mismo ni programa su propia ejecución. En Ubuntu 16.04, generalmente se ejecuta periódicamente a través de /etc/cron.daily/logrotate, así que revise ese archivo y si se ejecuta mediante cron. En otras versiones, los horarios reales pueden diferir, como con los temporizadores de systemd.
Crear registros de prueba y configuraciones independientes
El siguiente ejercicio utiliza un directorio temporal nuevo en lugar de los registros de producción. Ejecute en orden en la misma terminal y verifique las rutas de salida. Usa un directorio temporal y archivos de estado separados, por lo que no modifica la configuración ni el estado existente de logrotate del sistema.
demo_dir=$(mktemp -d)
printf 'first log line\n' > "$demo_dir/app.log"
cat > "$demo_dir/logrotate.conf" <<EOF
$demo_dir/app.log {
daily
rotate 3
missingok
notifempty
compress
delaycompress
create 0600
}
EOF
printf 'Test directory: %s\n' "$demo_dir"
cat "$demo_dir/logrotate.conf"
daily es una condición de rotación diaria, y rotate 3 es una configuración que conserva los registros anteriores hasta por tres rotaciones. missingok evita errores cuando un archivo no existe, y notifempty no rota registros vacíos. compress comprime los registros anteriores, y delaycompress retrasa la compresión del registro más recientemente rotado hasta la siguiente rotación. create 0600 establece permisos al crear nuevos archivos de registro después de la rotación.
El archivo de configuración en este ejemplo no está registrado en la programación del sistema, y ninguna aplicación real escribe en el registro de prueba. Configurar daily no crea un horario para la ejecución por sí mismo. Consulte el manual oficial de logrotate para verificar las opciones y condiciones apropiadas para su versión instalada.
Verificación de ejecuciones de prueba y rotaciones reales
Primero, verifique la configuración y el comportamiento esperado en modo de depuración. -d no cambia los registros ni actualiza los archivos de estado. Con un archivo de estado nuevo, la salida puede indicar que aún no es el momento de la rotación.
logrotate -d -s "$demo_dir/state" "$demo_dir/logrotate.conf"
Forzar una rotación solo en el archivo de práctica y verificar los resultados. -f fuerza la rotación incluso si no se cumplen las condiciones, por lo que no debe usarse descuidadamente en registros de operaciones reales.
logrotate -v -f -s "$demo_dir/state" "$demo_dir/logrotate.conf"
ls -l "$demo_dir"
cat "$demo_dir/app.log.1"
Si tiene éxito, el contenido original está en app.log.1 y se crea un nuevo app.log. La parte más reciente rotada aún no está comprimida debido a delaycompress. Después de agregar contenido al nuevo registro y forzar una rotación una vez más, la parte rotada anterior generalmente se comprime como app.log.2.gz.
printf 'second log line\n' >> "$demo_dir/app.log"
logrotate -v -f -s "$demo_dir/state" "$demo_dir/logrotate.conf"
ls -l "$demo_dir"
gzip -cd "$demo_dir/app.log.2.gz"
Puede verificar la primera línea del registro del último comando. Este ejercicio no reproduce un servicio en funcionamiento que registre logs. Cuando se termine la práctica, revise la ruta temporal donde se guardó la salida y elimine cualquier archivo que ya no necesite.
Al aplicar la configuración a un servicio de producción
Un programa en ejecución puede continuar escribiendo en el archivo de registro anterior incluso después de que el archivo haya sido renombrado. Verifique el procedimiento proporcionado para que el servicio vuelva a abrir el archivo de registro y revise el script postrotate del paquete existente, y verifique si el propietario, el grupo y los permisos del nuevo archivo son adecuados para el servicio. Antes de cambiar las reglas existentes de Apache, revise la documentación de la distribución y del servicio y haga una copia de seguridad de su configuración.
copytruncate copia el registro y luego trunca el original en su lugar; puede ser usado para programas que no pueden reabrir sus archivos de registro, pero se pueden perder registros entre la copia y la truncación. Siempre que sea posible, primero verifique si el servicio tiene una forma de reabrir el registro. rotate 3 se refiere al número de rotaciones a mantener, no a un límite en días o tamaño, por lo que la política de retención y el uso del disco deben verificarse por separado.
Verificar cuando no esté rotando
- Verifique que el archivo de configuración esté incluido en la configuración global y que la ruta de destino coincida con el registro real. Los archivos vacíos no rotan en
notifempty. - Verifique si el cron o el temporizador están realmente en funcionamiento y si se requiere rotación según el archivo de estado y las condiciones periódicas.
dailyno garantiza la rotación a la hora exacta diariamente en entornos verificados una vez al día. - Busque problemas con permisos, propiedad, sintaxis y rutas duplicadas en la salida de depuración y en los registros de errores del programador. Revise los resultados y planes de recuperación antes de aplicar
-fa los registros operativos.




