En esta entrada voy a explicar como hacer un rotado de logs sencillo mediante logrotate y systemd, generaremos un servicio que se lanzará con systemctl en el cual estableceremos la configuración del rotado y su periodicidad.

Lo primero, crearemos un fichero .config en /etc/systemd/system con el nombre de nuestro rotado:

En este fichero, insertaremos el siguiente código:

En el ejemplo, rotaremos los logs de la carpeta /ruta/con/logs/a/rotar/ que se llamen “Loquesea”.log
Se comprimirán los logs antiguos con gzip
Se truncará el fichero de log original, es decir, se copiará el mismo a un fichero milog.log.1 y cuando se haya completado, se vaciará el log original, esto evita tener que reiniciar servicios para regenerar el log
Se pospondrá la compresión del log rotado en dos ciclos, es decir, mantendremos dos logs sin rotar siempre.
El tamaño mínimo del log para ser rotado debe ser de 10Mb
Si no observamos un log, en lugar de devolver errores, pasará al siguiente
No enviará mails de confirmación, y retendrá logs durante 60 días/rotaciones.

Una vez creado el fichero, crearemos el servicio:

En el cual insertaremos:

Este fichero será el servicio en sí, en el que indicamos que debe hacer al lanzarse, que básicamente será, mediante el binario logrotate, ejecutar la configuración de rotado_logs.config

Por último, generaremos el fichero .timer, que es básicamente un cron de systemd que nos indicará cuando se va a ejecutar nuestro servicio de rotado de logs:

Y en este fichero añadimos:

Lo que hemos configurado es que se lance el servicio de rotado de logs todas las noches de todos los días a las 23.00.00.

Por último, solo nos queda habilitar el servicio de rotado de logs y su timer, y lanzar el timer:

¡Y listo! Todas las noches a las 23.00 se lanzará el servicio rotado_logs y rotará nuestros logs 🙂


0 commentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *