Professional Documents
Culture Documents
<http://www.iie.edu.uy/ense/asign/admunix/index.htm>
messages
Por lo general la mayora de los mensajes procesados por el daemon
syslog que se ve ms adelante se almacenan en un archivo llamado
*messages*, de modo que este archivo es uno de los primeros lugares a
los que recurrir en busca de informacin cuando se ha detectado un problema.
Syslog
El *syslog* es un sistema que procura centralizar (y en buena medida lo
logra) el manejo de los registros de eventos que generan los diversos
programas que corren en una mquina Unix. Por un lado facilita a los
desarrolladores de aplicaciones la generacin y el manejo de mensajes a
registrar, y por otro lado facilita a los administradores de sistema el
manejo en forma centralizada de los mensajes provenientes de diferentes
aplicaciones. Permite, clasificando los mensajes por origen e
importancia, enviarlos a diferentes destinos como archivos, a la
terminal de un operador, o eventualmente a un comando que lo reenve a
direcciones de correo electrnico o pagers.
El syslog tiene adems capacidad para manejar mensajes originados en
diferentes computadores en una red.
Los componentes ms importantes de *syslog* son:
*syslogd*: el daemon que recibe los mensajes y los almacena de
acuerdo a la configuracin almacenada en el archivo /etc/syslog.conf
*openlog()*, *syslog()* y *closelog()*: rutinas de la biblioteca C
estndar para comunicarse con syslog desde un programa.
*logger*: comando de usuario para agregar un mensaje a un log
El daemon syslogd
El daemon *syslogd* es uno de los primeros que se lanza a correr en los
scripts de arranque del sistema. Una vez arrancado queda esperando
recibir mensajes para procesarlos de acuerdo a la configuracin en
*/etc/syslog.conf*.
Syslogd reponde a la signal 1 (HUP) cerrando los logs, releyendo la
configuracin y reiniciando la operacin. Es por eso que si realizamos
algn cambio en la configuracin, o si rotamos o movemos los archivos de
log, es necesario enviarle una seal HUP a syslogd. Para facilitar esto
syslogd guarda al arrancar en un archivo de nombre predeterminado
(/etc/syslog.pid) el PID que le toc en suerte, de manera que el
siguiente comando rearranca a syslogd:
kill -1 `/bin/cat /etc/syslog.pid`
Configuracin de syslogd
La configuracin de syslogd se hace a travs del archivo de texto
/etc/syslogd.conf. A travs de este archivo se especifica hacia dnde se
deben enrutar los diferentes mensajes. Se pueden dejar lneas en blanco
o comentar lneas enteras con el carcter "#" como primer carcter no
blanco. Cada lnea tiene el siguiente formato:
/selector <Tab> action/
La accin especificada se aplicar a todos los mensajes que verifiquen
las condiciones que se especifican con el selector. En algunos sistemas
solamente puede utilizarse tabuladores como separador entre el selector
y la accin, generndose un error muy difcil de descubrir si al editar
el archivo syslog.conf se insertan espacios en lugar de tabuladores.
El *selector* se especifica como un par *facility.level*. Cuando un
programa enva un mensaje al syslog, lo hace especificando un valor de
"facility" y un valor de "level".
El campo *facility* procura identificar al programa que origin el
mensaje, mientras que el campo *level* busca clasificar el nivel de
importancia o severidad del mismo.
Los valores posibles de *facility* estn prefijados en cada sistema.
Bsicamente permiten identificar mensajes del kernel, de varios de los
deaemons y servicios de mayor prosapia en Unix (mail, daemon, lpr, news,
uucp, cron, syslog, ftp), mensajes que tienen que ver con seguridad y
autenticacin de usuarios y una serie de valores que pueden ser usados
con cierta libertad para diferentes aplicaciones (local0 a local7, user).
Los valores posibles de *level* son en general 8 y van en orden de
severidad creciente desde DEBUG hasta EMERG. La accin especificada se
aplica a todos los mensajes del nivel especificado o mayor.
Se puede combinar varios selectores en una lnea separndolos por el
carcter punto y coma (";").
Se pueden especificar varias facilities para un mismo nivel separndolas
con el carcter coma (",").
La clave especial "*" puede utilizarse para especificar todos los
niveles o todas las facilities (excepto la facility "mark").
La clave especial "none" en el campo level puede especificarse para
excluir todos los niveles de una cierta facility al combinar varios
selectores.
La facility "mark" recibe mensajes a intervalos de 20 minutos. Esto
permite, en caso que el sistema se "cuelgue", determinar de manera
bastante precisa la hora a la que sucedi el problema aunque esto haya
sido a una hora de baja actividad en el syslog.
La *accin* puede ser una de las siguientes:
*guardar en un archivo*. Es la accin ms habitual. El archivo debe
estar creado de antemano. Se especifica simplemente escribiendo el
nombre del archivo con su path completo.
*reenviar hacia el syslogd de otra mquina*. Se especifica
escribiendo @<nombre de mquina o direccin IP>. El nombre de la
mquina origen se agrega al comienzo del mensaje junto con el
timestamp, pero solamente se conserva por un salto. En el syslog
original el nombre de la mquina que gener el mensaje no interviene
en el selector, de manera que no es posible desencadenar diferentes
acciones segn la mquina que origin el mensaje. Esto ltimo se ha
modificado en versiones ms nuevas de syslog.
*reenviar a la terminal de un usuario* si es que est logueado. Se
puede especificar una lista de usuarios separados por el carcter
coma (",") o un carcter "*" para especificar todos los usuarios
logueados.
en algunos sistemas es posible pasar el texto del mensaje *como
entrada estndar a un comando*, escribiendo el comando precedido por
el carcter pipe ("|").
Los siguientes ejemplos tomados del man de syslogd.conf ilustran la
mayora de los casos.
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none /var/log/messages
# Everybody gets emergency messages, plus log them on another
# machine.
*.emerg *
*.emerg @arpa.berkeley.edu
Ejercicios e Investigacin
Determine en su sistema donde estn los diferentes archivos de
registro de eventos
Averige quin y desde qu terminal trabajo en el sistema el da
anterior
Identifique que poltica de rotacin de archivos de tiene
configurada su mquina (identifique el script peridico que se
encarga de eso, si utiliza algn comando especial para eso
(newsyslog p. ej.) lea el man de ese comando.
Modifique /etc/syslog.conf para hacer que determinados mensajes se
escriban tambin en la consola de su usuario. Prubelo usando el
comando logger. Retorne luego a la configuracin inicial!!!
Referencias y Bibliografa
Nemeth, Evi, "UNIX System Administration Handbook", cap. 12
*Comandos:* who, wtmp, utmp, newsyslog, compress, gzip, syslogd,
syslog.conf, logger.
------------------------------------------------------------------------
Julio Prez julio@iie.edu.uy <mailto: julio@iie.edu.uy>
Instituto de Ingeniera Elctrica <http://www.iie.edu.uy/> - Facultad de
Ingeniera <http://www.fing.edu.uy/> - Montevideo, Uruguay.