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).
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:
- creamos el archivo vacío /var/log/all.log:
# touch /var/log/all.log
- añadimos al archivo /etc/syslog.conf la línea:
*.* /var/log/all.log
- volvemos a cargar la configuración de sysklogd:
# /etc/init.d/sysklogd reload
- por último, abrimos una consola y ejecutamos el comando:
$ tail -f /var/log/all.log
- creamos el archivo vacío /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”
Deja un comentario
me parece muy buena la informacion aqui suministrada .
gracias !!!
Perfecto socio muy buenas tus enseñanzas, muchas gracias y por favor sigue escribiendo y enseñando a quienes no sabemos ;)
Gracias por tu explicación. Ahora bien, como hago para que los warning no salgan por pantalla?
Hola saludos, tengo instalado fedora core 10, donde puedo buscar el log de los
comandos ejecutados desde consola,
mil gracias
El historial de comandos ejecutados queda guardado en el archivo:
~/.bash_history
Más info en Historial de comandos ejecutados
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
Como puedo respladar los logs, no se como guardarlos en una dispositiv externo, memoria USB, disco dru externo etc…
Gracias
Buen tutorial, muy bien explicado y sin extenderte demasiado, eso es lo importante.
saludos
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
hola, buenaso la explicacion entendible y detallado
todo ok.
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
cuantas semanas permanecen los log en el sistema?
muy interesante tu post ..gracias por los contenidos me sirvio bastante ..
saludos….
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.
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.
hola yo nesecitaba saber cual es el comando para ver los logs de arranque….
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.