Rotar archivos de logs con newsyslog en OpenBSD
Rotar archivos de logs con newsyslog en OpenBSD
Escrito por Adrian Ali el 27 de septiembre de 2022, usando OpenBSD Release 7.2 contacto: adrianali arroba fortix.com.ar
Índice
1. Introducción
2. Archivo de configuración
3. Rotar logs propios
3.1. Cabecera en los nuevos archivos de logs
4. Rotación en el planificador de tareas
5. Referencias
1. Introducción
Así como en Linux existe la conocida herramienta de rotación de logs llamada logrotate, en OpenBSD esa herramienta se llama newsyslog. En el shell para obtener información de la misma ejecutamos el siguiente comando:
man newsyslog
2. Archivo de configuración
Su archivo de configuración es:
/etc/newsyslog.conf
cada linea en el archivo de configuración a excepción de las comentadas con carácter '#' , representa la ejecución de una rotación de un archivo de log, ejemplo:
puffy ~ # cat /etc/newsyslog.conf
# $OpenBSD: newsyslog.conf,v 1.38 2022/01/05 18:34:23 deraadt Exp $
#
# configuration file for newsyslog
#
# logfile_name owner:group mode count size when flags
/var/cron/log root:wheel 600 3 10 * Z
/var/log/authlog root:wheel 640 7 * 168 Z
/var/log/daemon 640 5 300 * Z
/var/log/lpd-errs 640 7 10 * Z
/var/log/maillog 640 7 * 24 Z
/var/log/messages 644 5 300 * Z
/var/log/secure 600 7 * 168 Z
/var/log/wtmp 644 7 * $M1D4 B ""
/var/log/xferlog 640 7 250 * Z
/var/log/pflog 600 3 250 * ZB "pkill -HUP -u root -U root -t - -x pflogd"
/var/www/logs/access.log 644 4 * $W0 Z "pkill -USR1 -u root -U root -x httpd"
/var/www/logs/error.log 644 7 250 * Z "pkill -USR1 -u root -U root -x httpd"
puffy ~ #
3. Rotar nuestros propios logs
Si nosotros con nuestros propios programas generamos logs lo podemos rotar agregando una linea al archivo de configuración, ejemplo:
/var/log/wireguard.log 644 12 * $W0 Z
descripción de los campos:
logfile_name.: El nombre del archivo a rotar con un camino absoluto.
owner:group..: Si queremos que el nuevo archivo que se genera al rotar el viejo tenga un dueño y grupo particular.
mode.........: Los permisos a configurar en el nuevo archivo de log en notación octal de tres dígitos UNIX.
count........: La cantidad de logs viejos a guardar.
size.........: El limite de tamaño del archivo en KiB que al superarlo se rota. Si se pone asterisco se toma el siguiente parámetro para rotar.
when.........: Cuando rotar en formato ISO 8601 restricted time format. Ver 'man newsyslog' para ejemplos.
flags........: Opciones de tratamiento a los logs viejos, ejemplo 'Z' comprime con gzip, mas opciones en 'man newsyslog'.
El último campo es opcional y se usa para ejecutar un comando al rotar el archivo.
3.1. Cabecera en los nuevos archivos de logs
Cuando newsyslog rota un archivo, generando un nuevo archivo de log, el mismo no esta vacío inicialmente, tiene una linea del tipo:
puffy ~ root # cat /var/log/rspamd/rspamd.log
2023-10-16T22:00:01.585Z telchar newsyslog[34067]: logfile turned over
puffy ~ root #
fijarse que newsyslog en esa primera linea avisa que el archivo de log nuevo esta listo, mostrando ademas un tiempo en el estándar ISO 8601 extendido, tanto para la fecha como para la hora.
4. Rotación en el planificador de tareas
El programa o comando newsyslog que es el encargado de rotar los logs, es ejecutado cada hora por una entrada en el crontab del usuario root, la misma es:
puffy ~ root # crontab -l | grep newsyslog
0 * * * * /usr/bin/newsyslog
puffy ~ root #