|
|
Periódicamente en el servidor es necesario hacer una rotación de los archivos de logs (o [log rotation](https://en.wikipedia.org/wiki/Log_rotation)) debido a que éstos pueden llegar a crecer excesivamente de tamaño y consumir el espacio libre disponible.
|
|
|
|
|
|
Rotar los archivos puede implicar:
|
|
|
* reducir el tamaño del archivo original,
|
|
|
* almacenar antiguas entradas de logs en distintos archivos de rotación,
|
|
|
* eliminar archivos de logs rotados a medida que pasa el tiempo,
|
|
|
* comprimir archivos de rotación, entre otras acciones.
|
|
|
|
|
|
# Logrotate
|
|
|
[Logrotate](https://linux.die.net/man/8/logrotate) está diseñado para facilitar la administración de sistemas que generan grandes cantidades de archivos de registro (logs). Permite la rotación automática, la compresión, la eliminación y el envío por correo de archivos de registro. A su vez, cada uno de estos archivos puede manejarse diariamente, semanalmente, mensualmente o cuando crezca demasiado.
|
|
|
|
|
|
Mediante logrotate se pueden realizar rotaciones de forma automática a partir de la validación periódica de condiciones sobre los archivos de logs y de acciones específicas de rotación. En `/etc/logrotate.conf` se encuentra la configuración general del programa y en `/etc/logrotate.d/*` están las configuraciones de revisión y rotación para cada aplicación monitoreada.
|
|
|
|
|
|
# Logs: Apache2
|
|
|
Al instalar Apache2, logrotate configura la siguiente regla de rotación que viene por defecto con Apache en `/etc/logrotate.d/apache2`
|
|
|
|
|
|
```sh
|
|
|
/var/log/apache2/*.log {
|
|
|
daily
|
|
|
missingok
|
|
|
rotate 14
|
|
|
compress
|
|
|
delaycompress
|
|
|
notifempty
|
|
|
create 640 root adm
|
|
|
sharedscripts
|
|
|
postrotate
|
|
|
if invoke-rc.d apache2 status > /dev/null 2>&1; then \
|
|
|
invoke-rc.d apache2 reload > /dev/null 2>&1; \
|
|
|
fi;
|
|
|
endscript
|
|
|
prerotate
|
|
|
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
|
|
|
run-parts /etc/logrotate.d/httpd-prerotate; \
|
|
|
fi; \
|
|
|
endscript
|
|
|
}
|
|
|
```
|
|
|
|
|
|
Es decir, se realiza una rotación semanal por cada archivo de log en el directorio `/var/log/apache2`; se comprime cada rotación, no se realiza la rotación si el peso del archivo es nulo, y se realiza hasta un máximo de 14 rotaciones.
|
|
|
|
|
|
Ahora, aumentamos la cantidad de rotaciones permitidas, rotando los logs por tamaño (ej 20mb) en lugar de por semana.
|
|
|
|
|
|
```sh
|
|
|
/var/log/apache2/*.log {
|
|
|
daily
|
|
|
missingok
|
|
|
rotate 30
|
|
|
compress
|
|
|
size 20M
|
|
|
delaycompress
|
|
|
notifempty
|
|
|
create 640 root adm
|
|
|
sharedscripts
|
|
|
postrotate
|
|
|
if invoke-rc.d apache2 status > /dev/null 2>&1; then \
|
|
|
invoke-rc.d apache2 reload > /dev/null 2>&1; \
|
|
|
fi;
|
|
|
endscript
|
|
|
prerotate
|
|
|
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
|
|
|
run-parts /etc/logrotate.d/httpd-prerotate; \
|
|
|
fi; \
|
|
|
endscript
|
|
|
}
|
|
|
```
|
|
|
|
|
|
> Se agrega la linea ‘size 20M’ y se incrementa la cantidad de rotaciones a 30 |
|
|
\ No newline at end of file |