LINUX

Cómo configurar el servidor de registro central usando Rsyslog en Ubuntu 20.04

Rsyslog es una utilidad de procesamiento de registros de código abierto. Permite el registro de datos de diferentes tipos de sistemas en un repositorio central. Rsyslog es un protocolo Syslog con varias extensiones, características y beneficios.

¿Qué hace que rsyslog sea tan poderoso? Rsyslog puede entregar más de un millón de mensajes por segundo a destinos locales cuando se aplica un procesamiento limitado.

En este tutorial aprendemos a instalar y configurar rsyslog en Ubuntu 20.04.

Características de Rsyslog

Rsyslog llegó en 2004 y amplía el protocolo syslog con nuevas características:

  • Soporte para el protocolo RELP
  • Soporte de operación con búfer
  • Escuchando conexiones TCP/UDP (con puerto de restricción, IPs)
  • Soporte para cargar muchos módulos (por ejemplo, módulo para soportar el protocolo RELP)
  • Soporte para descartar mensajes que contienen reglas especiales configuradas

En Rsyslog, los archivos de configuración siguen siendo los mismos que en Syslog. Esto simplemente significa que puede copiar un archivo syslog.conf directamente en rsyslog.conf y funcionará.

¿Qué son los registros y syslog?

Antes de entrar en el proceso de configuración en sí, primero veamos para qué se usan los registros. La información de registro realmente puede ayudarlo a ver qué sucedió exactamente en su sistema o qué sucede exactamente debajo del capó.

Permíteme darte un ejemplo: si de repente tu computadora se congeló o tal vez se bloqueó o incluso si tu sistema se apagó y mucha más información útil que normalmente no puedes ver cuando aparece el mensaje de error.

Si sabe cómo usar los registros correctamente, pueden brindarle muchas funciones y beneficios para obtener información de diagnóstico sobre el sistema en sí.

De forma predeterminada, Linux usa el demonio syslog para registrar registros sobre cómo se ejecuta el sistema y luego coloca estos registros en un repositorio central en: /var/registro donde podemos examinarlos e investigarlos.
En términos simples, Linux registra todo, desde los eventos del kernel hasta las acciones del usuario, lo que le permite ver casi cualquier acción realizada en su computadora o servidores.

En el sistema de archivos de Linux, hay un directorio especial para almacenar registros llamado /var/registro. Este directorio contiene todos los registros del propio sistema operativo, tales como: servicios o varias aplicaciones que se ejecutan en el sistema.

Veamos cómo se ven las estructuras de directorios y registros en Linux Ubuntu 20.04.

Muestra el directorio /var/log
Lista /var/registro

Directorio donde se almacenan diferentes tipos de registros:

/var/registro/syslog – Almacena todos los mensajes de inicio, mensajes de inicio de aplicaciones, etc. Almacena prácticamente todos los syslogs globales.
/var/registro/cron – Los trabajos cron son básicamente un tipo de tareas programadas y automatizadas creadas en el sistema que se ejecutan de forma periódica y repetida. Puede ver lo que almacenaría este directorio de registro.
/var/log/kern.log: almacena los registros del kernel. No importa cuáles sean los registros. Registros de eventos, errores o advertencias.
/var/log/auth.log – Registros de autenticación
/var/log.boot.log – Registros de arranque del sistema
/var/log/mysql.d – Registros de mysql
/var/log/httpd – Directorio de registros de Apache
/var/log/maillog – Registros del servidor de correo electrónico

Configure el servidor de registro centralizado Rsyslog en Ubuntu 20.04

Después de una breve descripción general, qué son los registros, Syslog y dónde entra rsyslog, pasemos al proceso de configuración en sí.

requisitos previos

  • Dos servidores con Ubuntu 20.04
  • Una dirección IP estática: por ejemplo, se requiere configurar 192.168.0.101 en la computadora servidor Rsyslog y 192.168.0.102 se configura en la computadora cliente Rsyslog

El sistema Ubuntu 20.04 tiene rsyslog instalado implícitamente que venía con paquetes de sistema estándar.

Puedes comprobar si se está ejecutando:

$ sudo systemctl status rsyslog
● rsyslog.service - System Logging Service
     Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2021-03-22 21:16:34 UTC; 12h ago
TriggeredBy: ● syslog.socket
       Docs: man:rsyslogd(8)
             https://www.rsyslog.com/doc/
   Main PID: 566 (rsyslogd)
      Tasks: 4 (limit: 2281)
     Memory: 2.7M
     CGroup: /system.slice/rsyslog.service
             └─566 /usr/sbin/rsyslogd -n -iNONE

Ejecute el siguiente comando para verificar la versión de Rsyslog que está instalada actualmente:

$ rsyslogd -v

Producción:

rsyslogd  8.2001.0 (aka 2020.01) compiled with:
         PLATFORM:                               x86_64-pc-linux-gnu
         PLATFORM (lsb_release -d):
         FEATURE_REGEXP:                         Yes
         GSSAPI Kerberos 5 support:              Yes
         FEATURE_DEBUG (debug build, slow code): No
         32bit Atomic operations supported:      Yes
         64bit Atomic operations supported:      Yes
         memory allocator:                       system default
         Runtime Instrumentation (slow code):    No
         uuid support:                           Yes
         systemd support:                        Yes
         Config file:                            /etc/rsyslog.conf
         PID file:                               /run/rsyslogd.pid
         Number of Bits in RainerScript integers: 64

Si no está instalado o en ejecución, instale rsyslog usando los siguientes comandos:

$ sudo apt-get update
$ sudo apt-get install rsyslog

Ahora es el momento de ir a rsyslog.conf archivo, para descomentar y modificar algunas líneas para ejecutar el servicio rsyslog en modo servidor:

$ sudo nano /etc/rsyslog.conf

Quite el comentario de estas cuatro líneas que permiten la vinculación de puertos udp y tcp:

# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")

# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")

El siguiente paso que necesitaremos agregar es crear una nueva plantilla. Necesitamos crear una nueva plantilla para recibir mensajes remotos. Una plantilla le indicará al servidor rsyslog cómo almacenar los mensajes de syslog entrantes.

NOTA: Agregar plantilla justo antes DIRECTIVAS GLOBALES sección:

$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
*.* ?remote-incoming-logs
& ~

La línea anterior indica que los registros entrantes se procesarán y almacenarán en el directorio /var/log/. Puede definir en el archivo /etc/rsyslog.conf dónde rsyslog los registros.

El nombre del archivo contiene las variables %HOSTNAME% y %PROGRAMNAME% que representan el nombre de la máquina cliente y el programa cliente que generó el mensaje de registro.

Archivo de configuración para Rsyslog
Archivo de configuración para Rsyslog

Guarde esto y luego reinicie el servicio rsyslog:

$ sudo systemctl restart rsyslog

Confirme que el servicio rsyslog está escuchando en los puertos configurados:

$ ss -tunelp | grep 514
udp    UNCONN  0       0                    0.0.0.0:514           0.0.0.0:*      ino:33591 sk:1 <->                                                             
udp    UNCONN  0       0                       [::]:514              [::]:*      ino:33592 sk:4 v6only:1 <->                                                    
tcp    LISTEN  0       25                   0.0.0.0:514           0.0.0.0:*      ino:33595 sk:7 <->                                                             
tcp    LISTEN  0       25                      [::]:514              [::]:*      ino:33596 sk:9 v6only:1 <->      

Si tal vez tiene un servicio de firewall ufw, debe permitir las reglas de puerto de firewall rsyslog:

sudo ufw allow 514/tcp
sudo ufw allow 514/udp

a comprobar la configuraciónejecute el siguiente comando:

sudo rsyslogd -N1 -f /etc/rsyslog.conf

Configurar Rsyslog en el cliente

Una vez que se complete la configuración del servidor rsyslog, el siguiente paso es configurar su máquina cliente rsyslog para enviar los registros al control remoto servidor rsyslog.

A medida que avanzamos con el archivo rsyslog.conf en un servidor remoto, el mismo archivo se abrirá en el lado del cliente con su editor favorito y editará algunos cambios:

sudo nano /etc/rsyslog.conf

Y permita que se conserve el FQDN: Alternativamente, para enviar rsyslog con el nombre de dominio completo (FQDN, como system1.example.com) en lugar de solo el nombre de host (system1), use la directiva:

$PreserveFQDN on

Agregue el servidor rsyslog remoto configurado al final.

 @192.168.0.101:514

O puede habilitar el envío de registros a través de UDP. Para TCP use @@ en lugar de uno

*.* @@192.168.0.101:514

Finalmente, agregue las siguientes variables en caso de que el servidor rsyslog falle:

$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1

Luego reinicie el servicio rsyslog:

sudo systemctl restart rsyslog

Revisa los registros

Una vez completada la configuración en la computadora cliente, queremos verificar que todo salió bien.

Vaya a su servidor Rsyslog para verificar los registros de su computadora cliente:

$ ls /var/log/

Encontrarás algo como esto:

Lista de archivos y directorios var/log
Lista /var/registro

En mi caso, el directorio llamado obrad es el nombre de mi computadora cliente que estoy usando actualmente. Entraremos en este directorio y veremos algo como:

Lista de archivos var/log/hostname
Listar var/log/hostname

Debería ver todos los archivos de registro generados por Rsyslog.

Puede verificar cualquiera de estos registros con el siguiente comando: Inspeccionemos, por ejemplo systemd.log.

$ tail -f /var/log/obrad/systemd.log

Y verás algo como:

2021-03-25T11:31:59+00:00 obrad systemd[1206]: Started VTE child process 42166 launched by gnome-terminal-server process 3186.
2021-03-25T11:32:28+00:00 obrad systemd[1206]: Created slice dbusx2d:1.2x2dorg.gnome.gedit.slice.
2021-03-25T11:32:28+00:00 obrad systemd[1206]: Started dbus-:1.2-org.gnome.gedit@0.service.
2021-03-25T11:32:31+00:00 obrad systemd[1206]: dbus-:1.2-org.gnome.gedit@0.service: Succeeded.

Como puede ver, inicié la terminal y el editor de texto gedit en mi computadora cliente y Rsyslog generó y mostró esto en la salida.

Conclusión

En este tutorial, aprendimos cómo configurar parámetros básicos para rsyslog utilizando el modelo cliente-servidor en Ubuntu 20.04. Syslog-ng, FluentD, Logstash, GreyLog2 y Logagent, Filebeat son las otras alternativas a Rsyslog.

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba
Cerrar