Vous êtes sur la page 1sur 9

Configurando el sistema de logs Centos6/Red Hat 6

Cmo funciona el sistema de logs


Cuando el sistema se inicia, se pone en marcha y efecta cualquier tipo de accin, se
registran sus acciones y las de la mayora de sus servicios en diferentes ficheros. Dos
servicios esta especializados en la recepcin de los mensajes que tienen como destino
estos ficheros.
syslogd: gestiona los logs del sistema. Distribuye los mensajes a archivos, tuberas,
destinos remotos, terminales o usuarios, usando las indicaciones especificadas en su
archivo de configuracin /etc/syslog.conf, donde se indica qu se loguea y a dnde se
envan estos logs.
klogd: se encarga de los logs del kernel. Lo normal es que klogd enve 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>. Adems, es
posible especificar mltiples destinos para un mismo mensaje. Algunos de los log ms
importantes son:
/var/log/messages: aqu encontraremos los logs que llegan con prioridad info
(informacin), notice (notificacin) 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 lneas con informacin del tipo invalid
password o authentication failure.
/var/log/dmesg: en este archivo se almacena la informacin que genera el kernel
durante el arranque del sistema. Podemos ver su contenido con el comando dmesg: $
dmesg

OTROS LOGS
/var/log/cron.log: Crond logs (cron job)
/var/log/maillog: Mail server logs
/var/log/qmail/ : Qmail log directory (more files inside this directory)
/var/log/httpd/: Apache access and error logs directory
/var/log/lighttpd: Lighttpd access and error logs directory
/var/log/boot.log : System boot log
/var/log/mysqld.log: MySQL database server log file
/var/log/secure: Authentication log
/var/log/utmp or /var/log/wtmp : Login records file
/var/log/yum.log: Yum log files

Configurando el sistema de logs Centos6/Red Hat 6

Como Visualizarlos
# tail -f /var/log/messages
# less /var/log/messages
# more -f /var/log/messages
# vi /var/log/messages

Los Mensajes
El servicio klogd gestiona los mensajes emitidos por el nucleo. Dispone de dos fuentes
de acceso a los mensajes:

el sistema de ficheros virutal /proc utilizado por defecto si esta presente, y en


particular /proc/kmsg;

las llamadas al sitema mediante la API del nucleo, en particular sys_syslog, si /proc esta
ausente o si se ha pasado el parametro -s a klogd.
Los mensajes del nucleo tienen niveles de prioridad diferentes, escalados de 0 (alta
prioridad) a 7 (mensajes de depuracion).
Nivel
0
1
2
3
4
5
6
7

Alias Sistema
EMERG
ALERT
CRIT
ERR
WARNING
NOTICE
INFO
DEBUG

Significado
No se puede utilizar el sistema.
Se debe efectuar una accin inmediatamente.
Problema critico.
Error.
Aviso.
Normal, pero necesita una atencin particular.
Informacin estndar.
Traza de depuracin del ncleo.

Configurando el sistema de logs Centos6/Red Hat 6

Configuracin rsyslog
Los logs funcionan con rsyslog en Red Hat/Centos 6, una herramienta muy potente y
que permite incluso enviar los mensajes de los logs a otra mquina donde centralizarlos
(lo cual puede ser muy til si administramos un nmero importante de mquinas).
Recordad que el * define todos los subsistemas

Subsistemas
auth/authpriv
cron
daemon

Nivel
kern
lpr
mail
news
syslog
user
uucp
local0->7

Significado
El nucleo
El servicio de impresin
La mensajera
La red
El propio Syslog
Mensajes de los procesos de los usuarios
Unix to Unix CoPy
Mensajes procedentes de klogd, la cifra representa el nivel

La importancia o nivel define el nivel de grabedad del mensaje. Es asterisco


define el conjunto de todos los niveles. Los niveles por klogd y syslogd son
equivalentes.

Nivel
emerg
alert
crit
err
warning
notice
info
debug
none

Significado
Servicio de seguridad y autenticacion
Servicio de cron
Los demonios del sistema

Significado
No se puede utilizar el sistema
Una intervencin inmediata es indispensable
Error critico para el subsistema
Error de funcionamiento
Aviso
Evento normal que merece ser sealado
Solo como infomacion
Mensaje mandado para el ajuste
Ignorar los mensajes

El destino o la accin puede ser un fichero, un mensaje a un usuario, la consola,


una lista de usuarios.... El asterisco indica todo el mundo.

Se inscriben los mensajen en el rsyslog en los ficheros /var/log/messages o en cualquier


otro fichero configurado en /etc/rsyslog.conf.

Configurando el sistema de logs Centos6/Red Hat 6

Probando los logs locales


Para probar nuestro sistema de forma local, vamos a simular un error en una aplicacin
de correo. Los logs no se escriben a mano sino a travs de la orden logger. La sintaxis
la puedes consultar con:
$ man logger

En nuestro caso vamos a usar la orden:


$ logger -p mail.err "Esto es una prueba"

La opcin -p imprime el mensaje Esto es una prueba en el subsitema llamado


mail.err
Leyendo los logs locales
Para ver el error que hemos simulado, basta con ver el contenido que se ha aadido al
final de log. Los diarios se almacenan en la ruta /var/log as que:
# tail -f

/var/log/maillog

Veremos algo como lo siguiente:


Apr 14 18:50:39 PC Usuario: Esto es una prueba

donde PC y Usuario son los nombres de nuestra mquina y del usuario que emite el
mensaje.

Obviamente no es muy prctico tener que leer los logs de esta forma pero existe una
multitud de herramientas con las que agilizar la gestin de los diarios, su lectura, aplicar
filtros, hacer bsquedas, etc.

Logs Remotos, Enviando logs a otra mquina


Lo primero que tenemos que hacer es editar la configuracin de rsyslog para que sepa
cundo enviar los logs a otra mquina, para lo cual necesitaremos permisos de
superusuario:
# vi /etc/rsyslog.conf

Entre otras cosas, aqu puedes definir dnde se guarda cada log. Para nuestro caso,
vamos al final del archivo y aadimos la siguiente lnea:

*.* @@192.168.56.10:514

Lo primero que aparece es un asterisco que significa la procedencia del mensaje


(factory), bien sea el sistema de mail (mail), un usuario (user), un servicio (daemon), el
programador (cron)

Configurando el sistema de logs Centos6/Red Hat 6


Tras el punto aparece un segundo asterisco que simboliza el nivel del mensaje (level):
alerta (alert), error (err), aviso (notice), etc.

A continuacin nos encontramos con una o dos arrobas. Una indica que el mensaje
usar transporte UDP, dos que se usa transporte TCP. Puede no ser demasiado
importante, pero recuerda bien que sistema escoges. Tras ella o ellas viene la IP del
destino, que ser el servidor donde se vayan a almacenar los logs y separado mediante
dos puntos, el nmero de puerto por el que llegarn.

Una vez guardado el archivo, reiniciamos el servicio de logs:


# service rsyslog restart

Configurando la recepcin
En el PC que vaya a recibir los logs, tambin tenemos que hacer un pequeo ajuste.
Editamos el archivo de configuracin (con permisos de administrador):
# vi /etc/rsyslog.conf

Ya en las primeras lneas nos encontramos con lo siguiente:


# provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514
# provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514

Como ves es bastante autoexplicativo. Dado que en el paso anterior escog enviar los
logs por transporte TCP, ahora descomentar las dos lineas del apartado de recepcin de
TCP. La primera de ellas carga el mdulo correspondiente y la segunda establece el
puerto 514 para la escucha (que es el mismo que habamos escrito en la configuracin
de la otra mquina).

Quedar as:
# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

Configurando el sistema de logs Centos6/Red Hat 6


Antes de cerrar el archivo, debo establecer al final del fichero donde se escribir lo que
llegue, as que bajo hasta el final y aado esta linea:
*.* /var/log/prueba.log

Donde /var/log/prueba.log ser el archivo que almacene los mensajes. Ya podemos


guardar la configuracin, cerrar el editor y reiniciar el servicio de logs:
# service rsyslog restart

Probando nuestro sistema de logs remotos

Desde el cliente, emitimos un mensaje:


$ logger -p 0.0 "hola remoto"

Introduzco la factora 0 y el nivel 0, que se ajustarn al patrn *.* que definimos en el


envo
En el servidor puede que aparezca una notificacin si nos encontramos en la terminal:
Message from syslogd@maquina at April 14 20:04:11
usuario: hola remoto

Y adems, el mensaje quedar registrado tal y como queramos. Se puede ver as:
cat /var/log/prueba.log.

Configurando el sistema de logs Centos6/Red Hat 6

Rotacion de Logs con logrotate


Logrotate es un estndar en sistemas RedHat y Debian. Con esta herramienta,
podremos especificar todo tipo de parmetros a la hora de administrar nuestros logs.
Un archivo de configuracin de logrotate, consiste en una serie de especificaciones para
los grupos de archivos de log que vamos a administrar. Las opciones especificadas fuera
de cada contexto de un log concreto, (errors, rotate, weekly...) se aplican a todos ellos,
pero pueden ser reemplazadas con una especificacin concreta para un log en particular.
Ejemplo:
# Example log rotation policy
errors logadmin@logadmin.net
rotate 5
weekly
/var/log/messages {
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid`
endscript
}
/var/log/samba/*.log {
notifyempty
copytruncate
sharedscripts
postrotate
/bin/kill -HUP `/var/lock/samba/*.pid`
endscript
}

Esta configuracin, rota el archivo /var/log/messages cada semana, mantiene 5


versiones del archivo y notifica al syslogd cada vez que el archivo es reseteado.
El archivo de log de samba tambien se rota semanalmente, pero en vez de guardarse y
reiniciarlo, se copia y se trunca. Una vez que se ha rotado el log, se enva una seal
HUP al demonio de samba.
Logrotate, normalmente se ejecuta en el cron diariamente.
[root@logadmin ~]# ls -l

/etc/cron.daily/logrotate

Su archivo estndar de configuracin es /etc/logrotate.conf, pero se pueden especificar


mltiples archivos de configuracin ( o directorios incluyendo archivos de
configuracin)
[root@logadmin ~]#
total 72
-rw-r--r-- 1 root
-rw-r--r-- 1 root
-rw-r--r-- 1 root
-rw-r--r-- 1 root
-rw-r--r-- 1 root

ll /etc/logrotate.d/
root
root
root
root
root

144
161
571
136
319

Aug 9
Apr 12
Aug 20
Nov 2
Jan 26

2004
2006
2004
2004
2006

acpid
cups
mgetty
ppp
psacct

Configurando el sistema de logs Centos6/Red Hat 6


-rw-r--r--rw-r--r--rw-r--r--rw-r--r--

1
1
1
1

root
root
root
root

root 61 May 30 2006 rpm


root 154 Apr 20 2006 snmpd
root 262 Sep 5 12:23 syslog
root 32 Jul 28 2006 up2date

Esta ltima caracterstica, es lo que hace que en los sistemas RedHat y Debian el
directorio /etc/logrotate.d sea un lugar estndar para los archivos de configuracin de
logrotate. Todos los paquetes software conscientes de logrotate (la gran mayora) se
integran con este sistema de administracin de logs en la parte de su proceso de
instalacin, lo que simplifica ampliamente la administracin.

Ejemplo de configuracin de logrotate con nuestros


archivos de rsyslog
Primero ajustemos que se generen archivos backup cada semana, eso lo hacemos
editando el archivo:
# vi /etc/logrotate.conf
ah debemos tener algo as:
weekly
rotate 4
create
Es nos indica que se generara un archivo con el log cada semana y que se almacenara 4
archivos nicamente y que posterior al backup 4 se eliminar el mas antiguo, esto
evitara que tengamos muchos archivos y saturemos el disco duro del servidor rsyslog.

Ahora examinaremos especficamente las reglas de backup (rotate) para los archivos
que nos interesan, para esto examinamos el archivo:
# vi /etc/logrotate.d/syslog
en este archivo verificamos que existan estas lneas, caso contrario las aadimos, si
queremos realizar lo siguiente:
sharedscripts
dateext
compress
maxage 360
size=+150M
Estas lineas nos indican que (dataext) que los archivos que se generaran tendrn como
parte de su nombre la fecha en la que se generaron (rotaron) y (compress)

Configurando el sistema de logs Centos6/Red Hat 6


indica que estos archivos generados deben ser comprimidos, (maxage) indica que se
elimienen lo ficheros de logs con una fecha mayor al numero de dias, (size), con este
parametro le indicamos que el log o logs se roten al tamao que definimos en este valor.
Con esto ya casi tenemos nuestros log centralizados y su backup respectivo cada
semana, ahora solo nos queda ajustar que da de la semana y a que hora se har el
backup.
Para esto debemos editar el archivo de configuracin del cron de linux, que obviamente
debe estar activo como servicio sino debe revisar ejecutando el comando ntsysv.
# vi /etc/crontab
01 0 * * 1 root run-parts /etc/cron.weekly (min, hora, da, mes, da de semana)
En este archivo edito la hora y fechas que se ejecuta las tareas semanales de linux, como
vern edite para que se ejecute los lunes a las 00 horas con 1 minuto.
Podemos forzar que se ejecute el backup (que se roten los archivos de log) usando el
comando:

# logrotate -f /etc/logrotate.conf
Con esto debe generar un archivo compreso en la carpeta /var/log/ (si es que no
cambiamos la ruta de los log).

Vous aimerez peut-être aussi