En este artículo vamos a montar un servidor syslog en un sistema CentOS para recoger las logs de nuestros equipos. Es un proceso muy sencillo.
La distribución trae rsyslogd como demonio syslog por defecto.
Lo primero que necesitamos hacer es crear el directorio donde posteriormente dejaremos los log de los diferentes equipos. La mayoría de los ficheros de log se encuentran en /var/log/. Ahí crearemos un nuevo directorio llamado syslog.
[root@gestion log]# pwd
/var/log
[root@gestion log]# mkdir syslog
Después necesitamos modificar el fichero /etc/sysconfig/rsyslog y añadir el parámetro -r a la línea de opciones, para permitir el logging desde equipos remotos:
# Options for rsyslogd
# Syslogd options are deprecated since rsyslog v3.
# If you want to use them, switch to compatibility mode 2 by "-c 2"
# See rsyslogd(8) for more details
SYSLOGD_OPTIONS="-c 2 -r"
Configurando rsyslog.
A continuación necesitamos modificar el fichero de configuración de rsyslog. El fichero es /etc/rsyslog.conf
Quitaremos el comentario de las líneas referentes a los módulos TCP y UDP para habilitar que rsyslogd escuche en el puerto 514:
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
Si queremos restringir los sistemas que tienen permitido enviar mensajes de syslog al servidor añadiremos la redes permitidas mediante el comando:
$AllowedSender UDP, 127.0.0.1, 192.168.0.0/24
$AllowedSender TCP, 127.0.0.1, 192.168.0.0/24
Por último añadimos la configuración que indica la forma de almacenar los mensajes dentro del directorio /var/log/syslog/. En mi caso la estructura que quiero es año/mes/ y dentro del mes un fichero diario por cada uno de los equipos:
$template DailyPerHostLogs,"/var/log/syslog/%$YEAR%/%$MONTH%/%$DAY%_%HOSTNAME%_messages.log"
*.info;mail.none;authpriv.none;cron.none -?DailyPerHostLogs
Rotación de ficheros.
Para finalizar la configuración del servidor únicamente nos queda establecer la rotación de los ficheros. El fin de la misma es reescribir los ficheros de log para ahorrar espacio.
El paquete logrotate está instalado por defecto en RHEL y derivados, así como en Ubuntu, Suse y otras distribuciones Linux.
Para incluir nuestro directorio de logs en la rotación tenemos que añadir el directorio que creamos dentro del fichero syslog ubicado en /etc/logrotate.d/ :
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
/var/log/syslog
{
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
A continuación muestro el fichero de configuración que trae por defecto el sistema, logrotate.conf . Este rota los ficheros semanalmente y mantiene 4 copias de los mismos. Si queréis modificarlo se encuentra en ./etc/
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
Arrancando servicio.
Para terminar solo queda arrancar el servicio:
[root@gestion /]# service rsyslog start
y comprobar que la máquina está escuchando en el puerto de syslog:
[root@gestion /]# netstat -nlup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 0.0.0.0:111 0.0.0.0:* 1304/rpcbind
udp 0 0 0.0.0.0:631 0.0.0.0:* 1419/cupsd
udp 0 0 0.0.0.0:632 0.0.0.0:* 1304/rpcbind
udp 0 0 0.0.0.0:46074 0.0.0.0:* 1349/rpc.statd
udp 0 0 0.0.0.0:514 0.0.0.0:* 26809/rsyslogd
udp 0 0 0.0.0.0:677 0.0.0.0:* 1349/rpc.statd
udp 0 0 0.0.0.0:69 0.0.0.0:* 31788/xinetd
udp 0 0 :::111 :::* 1304/rpcbind
udp 0 0 :::39154 :::* 1349/rpc.statd
udp 0 0 :::631 :::* 1304/rpcbind
udp 0 0 :::514 :::* 26809/rsyslogd
Para hacer que el servicio de rsyslog esté activo en el siguiente inicio del sistema, en todos los niveles de ejecución (2, 3, 4 y 5), se ejecuta lo siguiente:
chkconfig rsyslog on
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.