Imprimir

Logs en Linux

Veamos los logs en Linux:
 - Qué es el sistema de logs
 - Cómo funciona el sistema de logs
 - Monitorizar los logs
 - Scripts que generan logs

Qué es el sistema de logs

El sistema de logs de Linux (log = registro), es un mecanismo estándar que se encarga de recoger los mensajes generados por los programas, aplicaciones y demonios y enviarlos a un destino predefinido. En cada mensaje consta la fuente (el programa que generó el mensaje), la prioridad (nivel de importancia del mensaje), la fecha y la hora.

Hay varios niveles de prioridad de los mensajes (de menos a más prioritario: debug, info, notice, warning, warn, err, error, crit, alert, emerg y panic) y varios tipos de mensajes (auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security, syslog, user, uucp y local0-local7).

Cómo funciona el sistema de logs

  • El sistema de logs arranca con el script /etc/init.d/sysklogd, y tiene dos demonios:
    • syslogd: gestiona los logs del sistema. Distribuye los mensajes a archivos, tuberías, destinos remotos, terminales o usuarios, usando las indicaciones especificadas en su archivo de configuración /etc/syslog.conf, donde se indica qué se loguea y a dónde se envían estos logs.
    • klogd: se encarga de los logs del kernel. Lo normal es que klogd envíe sus mensajes a syslogd pero no siempre es así, sobre todo en los eventos de alta prioridad, que salen directamente por pantalla.
  • Los logs se guardan en archivos ubicados en el directorio /var/log, aunque muchos programas manejan sus propios logs y los guardan en /var/log/<programa>. Además, es posible especificar múltiples destinos para un mismo mensaje. Algunos de los log más importantes son:
    • /var/log/messages: aquí encontraremos los logs que llegan con prioridad info (información), notice (notificación) o warn (aviso).
    • /var/log/kern.log: aquí se almacenan los logs del kernel, generados por klogd.
    • /var/log/auth.log: en este log se registran los login en el sistema, las veces que hacemos su, etc. Los intentos fallidos se registran en líneas con información del tipo invalid password o authentication failure.
    • /var/log/dmesg: en este archivo se almacena la información que genera el kernel durante el arranque del sistema. Podemos ver su contenido con el comando dmesg:
      $ dmesg
  • Los archivos de log crecen y con el tiempo se pueden volver muy extensos, pero no tenemos que preocuparnos porque en /etc/cron.daily (tareas que se ejecutan cada día) está el script /etc/cron.daily/logrotate, (cuyo archivo de configuración es /etc/logrotate.conf), que se encarga de comprimirlos y aplicar una rotación de archivos, añadiéndoles la extensión .1.gz, .2.gz, etc., volviendo a crear uno vacío (cuanto mayor sea el número más antiguo será el log).

Monitorizar los logs

  • Es muy habitual monitorizar en una consola el archivo /var/log/messages:
    $ tail -f /var/log/messages
  • En el entorno gráfico hay varias aplicaciones para monitorizar logs, pero la mejor es KSystemLog (paquete ksystemlog).

    KSystemLog

    Otras opciones son:

    • GNOME-System-Log (paquete gnome-utils): monitor de logs de GNOME.
    • Xlogmaster (paquete xlogmaster): monitor de logs del GNU.
    • Xwatch (paquete xwatch): monitor de logs para las X.
  • Muchas veces los logs no se miran, por lo que es buena idea configurar el sistema para enviar todos los logs a un archivo (además del habitual) y visualizarlo en un terminal, para así poder ver en tiempo real todo lo que pasa en nuestra máquina. Esto nos permitirá aprender más sobre nuestro sistema y cómo funciona, y también detectar cualquier anomalía o error que de otra manera pasarían desapercibidos. Para ello:
    1. creamos el archivo vacío /var/log/all.log:
      # touch /var/log/all.log
    2. añadimos al archivo /etc/syslog.conf la línea:
      *.*       /var/log/all.log
    3. volvemos a cargar la configuración de sysklogd:
      # /etc/init.d/sysklogd reload
    4. por último, abrimos una consola y ejecutamos el comando:
      $ tail -f /var/log/all.log

Scripts que generan logs

El comando logger permite enviar eventos al demonio syslogd, por lo que se utiliza en scripts para registrar mensajes vía sysklogd. Por ejemplo, si hacemos:

# logger -t mi_programa -f /var/log/messages "Mensaje ejemplo"

veremos que se ha añadido a /var/log/messages la línea:

May 14 23:10:13 pc450 mi_programa: Mensaje ejemplo

17 Comentarios en “Logs en Linux”

  • yesy dice:

    me parece muy buena la informacion aqui suministrada .
    gracias !!!

  • Rodney dice:

    Perfecto socio muy buenas tus enseñanzas, muchas gracias y por favor sigue escribiendo y enseñando a quienes no sabemos ;)

  • Marcelo dice:

    Gracias por tu explicación. Ahora bien, como hago para que los warning no salgan por pantalla?

  • marin urrego dice:

    Hola saludos, tengo instalado fedora core 10, donde puedo buscar el log de los
    comandos ejecutados desde consola,
    mil gracias

  • crash-n-burn dice:

    El historial de comandos ejecutados queda guardado en el archivo:
    ~/.bash_history
    Más info en Historial de comandos ejecutados

  • kid-power dice:

    hola, saludos a todos, tengo un problema, con esto hago el comando logger -t syslog -f /var/log/messages “Mensaje ejemplo” para enviar un mensaje de prueba y no me registra nada, osea no me registra ningun log
    en el /var/log/messages. se le agredeceria de antemano la solucion

  • Rolas dice:

    Como puedo respladar los logs, no se como guardarlos en una dispositiv externo, memoria USB, disco dru externo etc…

    Gracias

  • yAyO dice:

    Buen tutorial, muy bien explicado y sin extenderte demasiado, eso es lo importante.

    saludos

  • Gustavo dice:

    Hola:

    Lei la información y esta muy buena, pero tengo una duda, es acerca de que yo tengo instalado Fedora 10 en mi pc, y no encuentro el syslog.conf, acaso est ha sido reemplazado por el rsyslog.conf, de ser asi que paso con el auth.log y kern.log.

    Asumo que el auth.log fue reemplzado o esta dentro de /var/log/secure, ¿pero el kern.log como fue reemplzado?

    GRACIAS

  • jfmega dice:

    hola, buenaso la explicacion entendible y detallado
    todo ok.

  • hucaza33 dice:

    cómo creo redo01.log borrados
    Borre los archivos redo01.log redo02.log y redo03.log como hago para crearlos desde sql sin acudir a cargar el oracle, los puedo crear vacíos?
    Gracias

  • jorge dice:

    cuantas semanas permanecen los log en el sistema?

  • jhonatan dice:

    muy interesante tu post ..gracias por los contenidos me sirvio bastante ..
    saludos….

  • Carlos dice:

    Muchísimas gracias por el post, la verdad es que está muy bien explicado y me ha sido de mucha utilidad para preparar mi clase sobre esta materia.

  • Johny Long dice:

    Buenas.
    Solo quiero puntualizar que a partir de Debian 5 se usa el demonio rsyslog (y no el dueto syslogd/klogd). Pero supongo que muchas otras distros aún estarán usando el sistema aquí descrito, así que muy buen post.
    Saludos.

  • marcos dice:

    hola yo nesecitaba saber cual es el comando para ver los logs de arranque….

  • Ricardo dice:

    Excelente explicación.
    Llegué a esta página buscando solución a un sitio que genera un log que no deja de crecer hasta ocupar Gigas de espacio, satura el espacio disponible en el servidor y el sitio se cae.
    ¿Hay algo que se pueda hacer?
    Ya que no tengo idea de este tema, ¿hay alguna recomendación que pueda hacer a los administradores del servidor?

    Gracias por cualquier ayuda.

Deja un comentario