Tiro monedas al aire, pero hasta ahora nunca las pude agarrar.

Muchas veces tenemos varios servidores y queremos centralizar sus respectivos logs en uno solo. En este post voy a explicar cómo hacerlo.
La idea es tener un sólo Servidor de logs (ServidorLogs) y almacenar todos los logs de los demás Servidores.

Configuración del ServidorLogs:
OBS:

  • Ser root
  • 192.168.1.156: es el ServidorLogs

Entramos a la consola y escribimos:
nano /etc/default/rsyslog

Nos va a aparecer lo siguiente:
# Options for rsyslogd
# -m 0 disables 'MARK' messages (deprecated, only used in compat mode < 3)
# -r enables logging from remote machines (deprecated, only used in compat mode < 3)
# -x disables DNS lookups on messages received with -r
# -c compatibility mode
# See rsyslogd(8) for more details
RSYSLOGD_OPTIONS="-c4"

La línea donde dice RSYSLOGD_OPTIONS=»-c4″, la cambiamos por:
RSYSLOGD_OPTIONS="-r514"

Ahora lo guardamos (Control + o), y luego lo cerramos (Control + x).
Ahora reiniciamos el servicio. Entramos a la consola:
/etc/init.d/rsyslog restart

Ahora, comprobamos si escucha en el puerto 514 UPD. Escribimos en la consola:
grep syslog /etc/services

Sale esto por pantalla:
syslog        514/udp

Tras esto, podremos comprobar que el demonio funciona con la opción deseada. Escribimos en la consola:
ps -ef | grep syslog

Nos sale lo siguiente:
root      1553     1  0 16:45 ?        00:00:00 /usr/sbin/rsyslogd -r514
root      1570  1357  0 16:46 pts/0    00:00:00 grep syslog

Ahora escribimos en la consola:
netstat -ntulp

Sale lo siguiente:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:46959           0.0.0.0:*               LISTEN      661/rpc.statd
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      649/portmap
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1332/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1113/exim4
tcp6       0      0 :::22                   :::*                    LISTEN      1332/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      1113/exim4
udp        0      0 0.0.0.0:837             0.0.0.0:*                           661/rpc.statd
udp        0      0 0.0.0.0:35171           0.0.0.0:*                           661/rpc.statd
udp        0      0 0.0.0.0:111             0.0.0.0:*                           649/portmap
udp        0      0 0.0.0.0:514             0.0.0.0:*                           1553/rsyslogd
udp6       0      0 :::514                  :::*                                1553/rsyslogd

Entramos a la consola y escribimos:
nano /etc/rsyslog.conf

Descomentamos estas dos lineas:
$ModLoad imudp
$UDPServerRun 514

Y agregamos lo siguiente:
# Agregado por proyectosbeta
# This one is the template to generate the log filename dynamically, depending on the client's IP address.
$template FILENAME,"/var/log/%fromhost-ip%/syslog.log"


# Log all messages to the dynamically formed file. Now each clients log (192.168.1.2, 192.168.1.3,etc...), will be u$
*.* ?FILENAME

Ahora lo guardamos (Control + o), y luego lo cerramos (Control + x).
Ahora reiniciamos el servicio. Entramos a la consola:
/etc/init.d/rsyslog restart

 

Configuración de Clientes de logs:

  • Donde van a mandar los logs al Servidor de logs (ServidorLogs).

OBS:
El proceso que se describe abajo se tiene que realizar para todos los clientes.

Escribimos en la consola:
nano /etc/rsyslog.conf

Cambiamos lo siguiente:
#
# First some standard log files.  Log by facility.
#
auth,authpriv.*             /var/log/auth.log
*.*;auth,authpriv.none      /var/log/syslog
#cron.*                     /var/log/cron.log
daemon.*                    /var/log/daemon.log
kern.*                      /var/log/kern.log
lpr.*                       -/var/log/lpr.log
mail.*                      /var/log/mail.log
user.*                      /var/log/user.log


#
# Logging for the mail system.  Split it up so that
# it is easy to write scripts to parse these files.
#
mail.info           /var/log/mail.info
mail.warn           /var/log/mail.warn
mail.err            /var/log/mail.err

#
# Logging for INN news system.
#
news.crit           /var/log/news/news.crit
news.err            /var/log/news/news.err
news.notice         /var/log/news/news.notice

# Agregado por proyectosbeta
*.*    @192.168.1.156:514

OBS:
@192.168.1.156:514 → es el servidor donde se guardan los logs. En este caso se llama ServidorLogs.

Ahora lo guardamos (Control + o), y luego lo cerramos (Control + x).
Ahora reiniciamos el servicio. Entramos a la consola:
/etc/init.d/rsyslog restart

En el ServerLogs:
Para ver las carpetas de logs de cada Servidor. Escribimos en la consola:
ls -l /var/log/

Y nos desplegará lo siguiente:
drwx------ 2 root        root   4096 jul 13 12:13 127.0.0.1
drwx------ 2 root        root   4096 jul 13 13:51 192.168.1.151
drwx------ 2 root        root   4096 jul 13 12:14 192.168.1.155
drwx------ 2 root        root   4096 jul 13 12:16 192.168.1.157

Por ejemplo para ver los logs del server 192.168.1.151. Escribimos en la consola:
cd /var/log/192.168.1.151

Y luego en la consola:
tail -f syslog.log

Y nos saldrá lo siguiente. A modo de ejemplo nomas.
Jul 13 13:51:06 ServidorBUMBUM kernel: imklog 4.6.4, log source = /proc/kmsg started.
Jul 13 13:51:06 ServidorBUMBUM rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="4736" x-info="http://www.rsyslog.com"] (re)start
Jul 13 13:54:06 ServidorBUMBUM su[4679]: pam_unix(su:session): session closed for user root

Fuente 1: Lo hice y lo entendí
Fuente 2: Server Fault
Fuente 3: The Geek Stuff


Comments

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *