Registros del sistema (logs)
● Nos permiten saber qué pasó● Nos permiten saber qué pasa
● Nos permiten saber qué pasará
Servicio syslogd
● Centraliza los logs del sistema
● Modelo cliente/servidor
● Evita problemas de bloqueos de archivo
Protocolo Syslog
● Estándar de facto
● Mensajes no mayores a 1024 bytes
● Por defecto, puerto UDP 514
● http://es.wikipedia.org/wiki/Syslog
Estructura de los mensajes
------------------------------------| Prioridad | Cabecera | Texto |
------------------------------------
Prioridad de los mensajes
Número de 8 bits
Recurso (5 bits)
Severidad (3 bits)
Prioridad = Recurso * 8 + Severidad
Recursos habituales
● auth
● authpriv
● cron
● daemon
● kern
● user
● local0 - local7
Severidades
0 Emergencia: el sistema está inutilizable 1 Alerta: se debe actuar inmediatamente 2 Crítico: condiciones críticas 3 Error: condiciones de error 4 Peligro: condiciones de peligro 5 Aviso: normal, pero condiciones notables 6 Información: mensajes informativos 7 Depuración: mensajes de bajo nivel
Cabecera de los mensajes
● Codificación ASCII (7 bits)
● Formato: mes dia hh:mm:ss hostname Oct 13 20:31:02 server01
Texto de los mensajes
● Dividido en información del proceso y mensaje
● Separados por el primer espacio en blanco
wpa[1236]: Group rekeying ok
-----------------------------
| Proceso | Mensaje |
-----------------------------
Servidores de Syslog
● sysklogd
● rsyslog
● syslog-ng
Configuración syslogd,rsyslog
/etc/rsyslog.conf
/etc/rsyslog.d
/etc/syslog.conf
Configuración rsyslog
Recurso.Severidad Acción
Escribir en el log
El comando:
logger -p local5.info "Mensaje de prueba"
Genera:
Jul 15 19:14:26 debian fabian: Mensaje de prueba
Escribir en el log
El comando:
logger -t Critico " se fue el sistema"
Genera:
Dec 17 03:37:05 CentOS-5 Critico: se fue el sistema
Categorías configuración rsyslog
Módulos:Módulos: Indica los módulos que se pueden cargar o descargar (es modular)
Directivas Globales:Directivas Globales: Especifica todas las directivas que podemos expresar de forma global (empiezan con $)
Reglas:Reglas: Especifica las reglas que aplican con su acción determinada.
Selección:Selección: Indica a qué categoría y tipo de prioridad (mail.debug)
Acción:Acción: Indica qué hacer con el mensaje luego de pasar por la selección.
Creacion de Reglas
mail.info muestra mensajes de mail, con prioridad info o superior
mail.=warn muestra mensajes de mail, con prioridad warn unicamente
mail.!warn muestra mensajes de mail, con prioridad menor a warn
mail.!=warn muestra mensajes de mail, con cualquier nivel de prioridad excepto warn
Creacion de Reglas
; --> especifica que distintos mensajes apunten a un mismo lugar:
auth.*;cron.warn /var/log/varios.log
, --> especifica distintos tipos de mensajes con los mismos niveles de prioridad:
auth,authpriv.* /var/log/auth.log
Logs Remotos Syslogd
Editar: /etc/sysconfig/syslog
SYSLOGD_OPTIONS="-m 0"
Cambiar por: SYSLOGD_OPTIONS=”-m 0 -r”
Logs Remotos Rsyslog
Editar: /etc/rsyslog.conf
# Provides UDP syslog reception #$ModLoad imudp.so #$UDPServerRun 514
Cambiar por: # Provides UDP syslog reception $ModLoad imudp.so $UDPServerRun 514
Envío de logs remotos
Recurso.Severidad @servidor
Mail.* @192.168.0.1
Envío de logs remotos
Recurso.Severidad @servidor
Mail.* @192.168.0.1
Rotación de logs
● Según Apache: 1Mb cada 10.000 líneas de log
● Los archivos grandes son lentos para trabajar
● Se puede llenar el sistema de archivos
¿Cómo rotar los archivos de log?
● A mano (complicado y olvidadizo)
● Con un script (vamos mejorando)
● Con 'logrotate' (la opción más potente)
Configuración de logrotate
/etc/logrotate.conf
/etc/logrotate.d
Opciones comunes de logrotate
Compress Comprimir los logs Daily Rotar todos los días Weekly Rotar cada semana Monthly Rotar cada mes mail m Enviar por mail a la dirección 'm' Prerotate Ejecutar script antes de rotar Postrotate Ejecutar script después de rotar rotate n Guarda 'n' logs antes de borrar size s Rota si el tamaño es mayor a 's' Sharedscripts Ejecuta scripts una sóla vez
Ejemplo configuración logrotate
/var/log/apache2/*.log { weekly rotate 5 compress sharedscripts postrotate /etc/init.d/apache2 reload > /dev/null endscript }
Logrotate
Rotacion en modo debug sin impacto: logrotate -d /etc/logrotate.conf
Rotacion real con verbose Logrotate -v /etc/logrotate.conf
Monitoreo de UsuariosUso de Lastlog:
lastlog -u root lastlog -b 10 Lastlog -t
Uso de Faillog: faillog -u root falilog -a faillog -s sec faillog -r faillog -m Faillog -l sec
Bibliografía
Fabian Portantier www.portantier.com
Rino Rondan www.itrestauracion.com.ar
Federico Nan www.rootlinux.com.ar
Bajo Licencia CC BY-SA 3.0