Alejandro Arco Alejandro Arco

Rotar logs de apache con logrotate en Linux

linux, servidores web 5 Comentarios »

logrotate - Rotar logs de apache con logrotate en LinuxUn log es un registro de eventos producidos durante un periodo de tiempo concreto. El servidor web apache almacena en distintos logs (ficheros de registros) la actividad de nuestra aplicación (accesos y errores) de los distintos sitios web que tengamos configurados.

Para evitar que el tamaño de los logs crezca de forma incontrolada se opta por rotarlos, en caso de no hacerlo podremos quedarnos rápidamente sin espacio en disco.

No debemos olvidar que la información recopilada en los ficheros log se debe conservar al menos durante 1 año por eventuales necesidades legales, de este modo, además de rotarlos se opta habitualmente por comprimir logs.

A continuación detallaré como rotar logs de nuestro servidor web apache configurando logrotate pare desempeñar esta función. Los ejemplos mostrados han sido testeados en la distribución Debian de Linux, aunque en las distribuciones más comunes su configuración es similar.

Instalación logrotate - rotar logs de apache con logrotate

La herramienta logrotate ya se encuentra preconfigurada e instalada en la distribución Debian de Linux, de este modo en la mayoría de los casos nos podríamos saltar este paso.

Para instalar el logrotate usaremos la herramienta apt-get (sistema de gestión de paquetes de software):


apt-get update
apt-get install logrotate

Una vez finalizada la instalación de logrotate comprobamos que disponemos de todos los ficheros y carpetas necesarias para su correcto funcionamiento:


/var/lib/logrotate/
/etc/logrotate.d/
/usr/sbin/logrotate
/etc/logrotate.conf

Configurar logrotate - rotar logs de apache con logrotate

Para configurar nuestro logrotate actualizaremos el fichero logrotate.conf:


vi /etc/logrotate.conf

El contenido de nuestro logrotate.conf será similar al mostrado posteriormente:


# ejecutar "man logrotate" para más información

# rotar log semanalmente
weekly

# mantener logs durante 4 semanas
rotate 4

# rotar y crear nuevo log aunque esté vació el anterior
create
# descomentar si quieres comprimir logs
#compress

# ubicación de paquetes para el rotado de logs
include /etc/logrotate.d

# los logs wtmp o btmp los haremos rotar aquí
/var/log/wtmp {
    missingok
    monthly
    create 0664 root utmp
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0664 root utmp
    rotate 1
}

# los logs del sistema se pueden rotar aquí

Crearemos el fichero para rotar logs de apache con logrotate en la distribución Debian de Linux:


vi /etc/logrotate.d/apache2

Y le añadiremos el siguiente contenido al fichero creado anteriormente:

# ubicación de los logs del servidor web apache
/var/log/apache2/*.log {
        weekly
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 root adm
        sharedscripts
        postrotate
                if [ -f /var/run/apache2.pid ]; then
                        /etc/init.d/apache2 restart > /dev/null
                fi
        endscript
}

# logs de acceso y errores de los sitios web
/var/www/logs/*.log {
        weekly
        missingok
        rotate 52
        compress
        notifempty
        create 640 root root
        sharedscripts
        postrotate
                if [ -f /var/run/apache2.pid ]; then
                        /etc/init.d/apache2 restart > /dev/null
                fi
        endscript
}

Ejecutar logrotate - rotar logs de apache con logrotate

Posteriormente comprobaremos manualmente el correcto funcionamiento de logrotate usando el siguiente comando:

/usr/sbin/logrotate /etc/logrotate.conf -f

Además, logrotate debe ir configurado en un cron para que se ejecute periódicamente, esto podremos hacerlo gracias a la herramienta crontab (ejecuta procesos o scripts a intervalos regulares):

crontab -e

Y agregamos en nuestro archivo crontab el siguiente contenido:

# Rotar logs de apache con logrotate a las 3 am
0 03 * * * root /usr/sbin/logrotate /etc/logrotate.conf > /dev/null 2>&1

Finalmente reiniciaremos el proceso cron para que los cambios surtan efecto:

/etc/init.d/cron restart

No debemos olvidar rotar logs de apache posteriormente de actualizar nuestro sistema de estadísticas web (por ejemplo a la 1 am), ya que de no hacerlo perderíamos información.

El rotado de logs descrito anteriormente lo podemos aplicar a cualquier otra herramienta del sistema. De este modo, espero que este artículo os sea de gran utilidad no sólo para este caso sino para muchos otros.

Cualquier duda que tengáis podemos tratarla a través de los comentarios.

Comprimir y descomprimir ficheros

linux 1 Comentario »

A continuación mostraré una guía rápida para comprimir y descomprimir ficheros en la consola de Linux con los algoritmos de comprensión más usados actualmente como son: .tar.gzip.tar.gz.bz2.tar.bz2 y los no menos importantes en plataformas Linux, .zip y .rar.

.tar (tar)

  • Comprimir .tar
    tar cvf fichero.tar /var/www/vhosts/*
  • Descomprimir .tar
    tar xvf fichero.tar
  • Listar ficheros .tar
    tar tvf fichero.tar

.gz (gzip)

  • Comprimir .gz
    gzip -q fichero (El archivo lo comprime y lo renombra como “fichero.gz”)
  • Descomprimir .gz
    gzip -d fichero.gz (El archivo lo descomprime y lo deja como “fichero”)
  • Nota: gzip solo comprime ficheros, no directorios.

.tar.gz (tar con gzip)

  • Comprimir .tar.gz
    tar czvf fichero.tar.gz /var/www/vhosts/*
  • Descomprimir .tar.gz
    tar xzvf fichero.tar.gz
  • Listar ficheros .tar.gz
    tar tzvf fichero.tar.gz

.bz2 (bzip2)

  • Comprimir .bz2
    bzip2 fichero (El archivo lo comprime y lo renombra como “fichero.bz2″)
  • Descomprimir .bz2
    bzip2 -d fichero.bz2 (El archivo lo descomprime y lo deja como “fichero”)
  • Nota: bzip2 solo comprime ficheros, no directorios.

.tar.bz2 (tar con bzip2)

  • Comprimir .tar.bz2
    tar -c ficheros | bzip2 > fichero.tar.bz2
  • Descomprimir .tar.bz2
    tar jvxf archivo.tar.bz2
  • Listar ficheros .tar.bz2
    bzip2 -dc fichero.tar.bz2 | tar -tv

.zip (zip)

  • Comprimir .zip
    zip fichero.zip /var/www/vhosts
  • Descomprimir .zip
    unzip fichero.zip
  • Listar ficheros .zip
    unzip -v fichero.zip

.rar (rar)

  • Comprimir .rar
    rar -a fichero.rar /var/www/vhosts
  • Descomprimir .rar
    rar -x fichero.rar
  • Listar ficheros .rar
    rar -v fichero.rar

Los comandos mencionados anteriormente han sido ejecutados correctamente en la distribución de Linux Debian. Espero que esta guía rápida para comprimir y descomprimir ficheros os sea de gran utilidad como lo es para mí.

Fuente: Alejandro Arco

Publicado por Alejandro Arco.Gracias WordPress & N.Design Studio.