En este momento estás viendo Como revisar los ficheros de log en GNU/Linux

Como revisar los ficheros de log en GNU/Linux

Como revisar los ficheros de log en GNU/Linux

Vemos como revisar los ficheros de registros «logs», que te pueden venir muy bien para solucionar cualquier problema que afecte a tu sistema GNU/Linux.

Para los administradores de sistemas GNU/Linux es fundamental consultar los ficheros de registros para rastrear y enfrentar problemas del sistema. Son ficheros de un valor muy alto para un administrador de sistemas.

El sistema operativo y las aplicaciones que corren sobre él, normalmente, general unos ficheros con diferentes mensajes que se almacenan en lo que se llama registros o «logs». En los sistemas GNU/Linux encontramos ficheros de configuración, directorios, comandos y demonios para crear, almacenar e ir gestionando el espacio que ocupan. Conocer la ubicación de estos ficheros y los comandos necesarios, nos ahorrará tiempo, cuando nos enfrentemos a un problema complicado.

Sumario

  • Ubicación de los ficheros de registro
  • Ver el contenido de los ficheros de registro
  • El «daemon» rsyslog
  • Rotación de ficheros de registro

Ubicación de los ficheros de registro

En los sistemas GNU/Linux tenemos, de forma predeterminada, los ficheros de registro, ubicados en «/var/log». Consultamos su contenido ejecutando

ls -l /var/log
Contenido de "/var/log"
Contenido de var/log

Ver el contenido de los ficheros de registro

En el directorio «/var/log» observamos diferentes ficheros de registro. También tienes los registros de los programas que hayas instalado, distribuidos en directorios. Los más importantes, referidos al sistema son:

  • /kern.log: Mensajes del núcleo.
  • /syslog: Registro de mensajes relativos a la seguridad del sistema.
  • /debug: Información de depuración de los programas.
  • /messages: Información general que nos proporciona el sistema.
  • /user.log: Información de usuario.
  • /Xorg.0.log: Información sobre el entorno gráfico.
  • /auth.log: Conexiones al sistema, incluidos los intentos fallidos.

Tenemos dos ficheros importantes: «wtmp» y «utmp», que se encargan de realizar un seguimiento de los usuarios que inician o cierran sesión en el sistema, pero para consultarlos necesitamos unos comandos específicos, no funcionará con el comando «cat».

Por ejemplo, al ejecutar el comando «who», nos dará un listado de los usuarios logueados en el sistema. Para ofrecernos estos datos lee el fichero «/var/run/utmp» en Debian. Si utilizas Ubuntu lo leerá en «/run/utmp».

who

para listar el historial de inicios de sesión por usuarios, ejecuta

last
Salidas de "who" y "last"
Salidas de «who» y «last»

Si el listado es muy largo, puedes redirigir la salida a un fichero y será más manejable. También podemos filtrar con «grep». Por ejemplo para buscar los inicios de sesión del usuario «javier» ejecuto

last | grep "javier" 
Salida de "last" y filtrado con "grep"
Salida de «last» y filtrado con «grep»

También podemos saber el último logueo en el sistema con

lastlog

Para saber cuando ha sido reiniciado el sistema tenemos el comando «last» con el argumento «reboot»

last reboot
Salidas de "last log" y "last reboot"
Salidas de «last log» y «last reboot»

La mayoría de los ficheros de registro, son ficheros de texto que podremos manejar con los comandos normales (cat, head, tail,..) y editarlos. Vemos un ejemplo. Para ver las 10 últimas filas del fichero «/var/log/messages», ejecuto

sudo tail /var/log/messages
Salida de "sudo tail /var/log/messages"
Salida de «sudo tail /var/log/messages»

Y, con el comando «tail» y la opción «-f», puedes monitorizar y ver los mensajes conforme se reciban.

tail -f /var/log/messages

El «daemon» rsyslog

El demonio «rsyslog» es un servicio del sistema para gestionar el almacenamiento de mensajes de los sistemas GNU/Linux. Se encarga de guardar en registros diferentes los mensajes, en función de su origen. Elige el adecuado dentro del directorio «/var/log». Tenemos la opción, como veremos luego, de redirigir los mensajes de los registros a otro servidor para tenerlos centralizados.

La configuración del servicio la tenemos que hacer en el fichero «/etc/rsyslog.conf».

Fichero de configuración de «rsyslog»

Vemos su contenido. Al final del fichero nos dice que se incluye la configuración que realicemos en el fichero «/etc/rsyslog.d/.conf» en la linea «$IncludeConfig /etc/rsyslog.d/.conf».

cat /etc/rsyslog.conf
Contenido del fichero de configuración de "rsyslog"
Contenido del fichero de configuración de «rsyslog»

Editamos el fichero de configuración del demonio con el editor que queramos; «/etc/rsyslog.d/*.conf». Con el siguiente comando vemos su contenido.

cat /etc/rsyslog.d/*.conf
Contenido del fichero de configuración de "rsyslog"
Contenido del fichero de configuración de «rsyslog»

Tipos de mensajes y prioridad

Aquí podemos configurar donde se guardarán los ficheros correspondientes. Los tipos que encontramos entre otros más, son

  • auth o authpriv: mensajes generados por eventos relacionados con la autorización y la seguridad
  • cron: mensajes relacionados con el demonio Cron
  • daemon: Mensajes provenientes de otros demonios
  • kern: mensaje procedente del kernel de Linux
  • lpr: impresión de mensajes de registro relacionados
  • mail: mensajes generados por el subsistema de correo-e
  • user: registrar mensajes provenientes de programas de usuario

Los mensajes se clasificaran, según su prioridad según:

  • emerg: Condición de emergencia
  • alert: Condición que necesita intervención inmediata
  • crit: Condición crítica
  • err: Error
  • warn: Warning, Advertencia
  • notice: Condición que puede requerir atención
  • info: Mensaje informativo simple, no se requiere intervención
  • debug: información de depuración de los programas

Configuración

Lo vemos con un ejemplo. En la linea «kern.* -/var/log/kern.log»

Destino de los mensajes de log del kernel
Destino de los mensajes de log del kernel

Configuramos el demonio para que guarde los mensajes procedentes del «kernel», en el fichero «/var/log/kern.log». El asterisco «*» indica que se recibirán todo tipo de mensajes de los definidos antes. Nos permite usar caracteres especiales para configurar más granularmente.

Si elegimos una prioridad, por ejemplo, «kern.err -/var/log/kern.log», solo se registrarán los mensajes de error y superiores.

Si después del punto ponemos el signo «=», solo se registrarán los mensajes de la prioridad establecida.

Y si seguimos el punto con «!», le decimos que todas las prioridades menos la indicada.

Otro ejemplo es la linea «.emerg :omusrmsg:», donde con el asterisco «*» le decimos que todos los usuarios recibirán mensajes de emergencia. También podemos especificar un usuario o varios separados por comas en lugar del asterisco.

Para enviar mensajes a todos los usuarios
Para enviar mensajes a todos los usuarios

Como hemos comentado, tenemos la opción de redirigir los mensajes a un servidor. El demonio «syslog», como parte de un sistema operativo de red, nos permite hacerlo. El «daemon» escucha los mensajes de registro en el puerto 514 UDP. Por ejemplo para reenviar los mensajes críticos del kernel a un servidor llamado «server-log» añadimos la linea

kern.crit	@server-log

Una vez hechos los cambios reiniciamos el servicio y comprobamos su estado

sudo systemctl restart rsyslog

sudo systemctl status rsyslog
Reinicio y estado del servicio
Reinicio y estado del servicio

Rotación de ficheros de registro

El demonio va a estar constantemente escribiendo en los ficheros de registro y estos no pararán de crecer. La gestión de ficheros tan grandes será más ardua y el tamaño de los ficheros puede plantear algún problema de rendimiento.

Para evitar este problema, GNU/Linux utiliza el concepto de rotación de ficheros. Consiste en que cuando se crea un nuevo fichero de registro, se cambia el nombre al anterior y se comprime. Y cada vez que se crea uno, el más antiguo se borra. Son búferes de memoria en anillo (Ver dmesg en weblinus.com).

Configuración de la rotación

Iniciamos la rotación con la utilidad «logrotate». Vemos su configuración en el fichero «/etc/logrotate.conf»

cat /etc/logrotate.conf
Contenido del fichero de configuración de logrotate
Contenido del fichero de configuración de logrotate

Por defecto, los ficheros de registro rotan semanalmente y quedan cuatro siempre, por lo tanto podremos consultar los de las últimas 4 semanas.

Como ves en la captura, tenemos cinco registros de «daemon», «debug» y «kern»,

Rotación de los ficheros de log
Rotación de los ficheros de log

Funciona de la siguiente manera.

  1. El contenido del fichero «daemon.log.4gz» se borrará y perderá definitivamente.
  2. El contenido del fichero «daemon.log.3gz» se mueve al fichero comprimido «daemon.log.4.gz».
  3. El contenido del fichero «daemon.log.2gz» se mueve al fichero comprimido «daemon.log.3.gz».
  4. El contenido del fichero «daemon.log.1» se comprime y mueve al fichero «daemon.log.2.gz».
  5. El contenido del fichero «daemon.log» se mueve al fichero «daemon.log.1», quedando «daemon.log» vacío y preparado para recibir y registrar la información nueva.

Los ficheros «wtmp» y «btmp» son la única excepción, pues se rotan todos los meses. «wtmp» hace un seguimiento de los inicios de sesión en el sistema y «btmp» realiza un seguimiento de los intentos de inicio de sesión fallidos.

Como vemos al final del fichero tenemos un «include /etc/logrotate.d». Lo vemos

ls -l /etc/logrotate.d
Contenido del directorio logrotate.d
Contenido del directorio logrotate.d

Y el contenido de rsyslog, que muestra como se reciclan los ficheros que contiene.

cat /etc/logrotate.d/rsyslog
Contenido de rsyslog
Contenido de rsyslog

Como ves no es demasiado complicado gestionar los mensajes de registro del sistema, y seguro que te salvarán alguna vez de un problema complicado.

Si tienes algún comentario que hacer sobre este artículo, al pie del post tienes un formulario para hacerlo.

Si quieres contactar conmigo por cualquier otro asunto relacionado con el sitio, en la página de contacto, tienes un formulario más adecuado.

Y para suscribirte y recibir las novedades publicadas, tienes un enlace en pie de la página o desde aquí mismo.

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.