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

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

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

En este tutorial aprendemos cómo instalar y configurar rsyslog sobre Ubuntu 20.04.

Funciones de Rsyslog

Rsyslog llegó en 2004. y extiende el protocolo syslog con nuevas características:

  • Soporte de protocolo RELP
  • Soporte de operación con búfer
  • Escuchar conexiones TCP / UDP (con restricciones de puerto, IP)
  • Soporte para cargar muchos módulos (para example módulo para soportar el protocolo RELP)
  • Soporte para descartar mensaje que contiene reglas especiales configuradas

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

¿Qué son los registros y syslog?

Antes de pasar al proceso de configuración en sí, veamos primero para qué se utilizan los registros. La información de registro realmente puede ayudarlo a ver qué sucedió exactamente en su sistema, o qué está sucediendo exactamente debajo del capó.

Déjame darte un example: si de repente su PC se encrespa o tal vez se bloquea o incluso el tiempo de inactividad de su sistema y mucha más información útil que no puede ver de la manera habitual cuando aparece un mensaje de error.

Si sabe cómo usar los registros correctamente, estos pueden brindarle muchas características y beneficios para la 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 está ejecutando el sistema y luego colocar estos registros en un repositorio central en: / var / log donde podamos examinarlos e investigarlos.
En términos simples, todo, desde los eventos del kernel hasta las acciones del usuario, se registra en Linux, lo que le permite ver casi cualquier acción realizada en su PC o servidores.

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

Veamos cómo se ven los directorios y las estructuras de los registros en la nueva versión de Linux ubuntu 20.04.

Lista / var / log

Directorio donde se almacenan diferentes tipos de registros:

/var / log / syslog – Almacena todos los mensajes de inicio, mensajes de inicio de aplicaciones, etc. Prácticamente almacena todos los registros del sistema global.
/ var / log / cron – Los trabajos Cron son básicamente una especie de tarea programada y automatizada creada en el sistema, que se ejecuta de forma periódica y repetida. Puede ver lo que almacenaría este directorio de registros.
/var/log/kern.log: almacena registros del kernel. No importa qué registros sean. Registros de eventos, errores o registros de advertencia.
/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 – Apache directorio de registros
/ var / log / maillog – Registros del servidor de correo

Configurar 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 tiene un lugar rsyslog, pasemos al proceso de configuración en sí.

Prerrequisitos

  • Dos servidores que ejecutan Ubuntu 20.04
  • Una dirección IP estática: example 192.168.0.101 debe configurarse en la máquina servidor Rsyslog y 192.168.0.102 está configurado en la máquina cliente Rsyslog

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

Puede comprobar para ver 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 (también conocido como 2020.01) compilado con: PLATFORM: x86_64-pc-linux-gnu PLATFORM (lsb_release -d): FEATURE_REGEXP: Sí Compatibilidad con GSSAPI Kerberos 5: Sí FEATURE_DEBUG (compilación de depuración, código lento): No se admiten operaciones atómicas de 32 bits : Sí Se admiten operaciones atómicas de 64 bits: Sí asignador de memoria: Instrumentación en tiempo de ejecución predeterminada del sistema (código lento): No compatibilidad con uuid: Sí compatibilidad con systemd: Sí Archivo de configuración: /etc/rsyslog.conf Archivo PID: /run/rsyslogd.pid Número de bits en números enteros de RainerScript: 64

En caso de que no esté instalado o en ejecución, instale rsyslog usando los siguientes comandos:

PS sudo apt-get update
PS sudo apt-get install rsyslog

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

$ sudo nano /etc/rsyslog.conf

Descomente estas cuatro líneas que habilitan el enlace 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 dará instrucciones al servidor rsyslog sobre cómo almacenar los mensajes entrantes del syslog.

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 recibidos se procesarán y almacenarán dentro del directorio / var / log /. Puede definir en el archivo /etc/rsyslog.conf dónde rsyslog logs.

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

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

Save esto y luego reiniciar 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 tenga el servicio de firewall ufw, debe permitir las reglas de puerto del firewall rsyslog:

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

A verificar la configuración, ejecute el siguiente comando:

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

Configurar Rsyslog en el cliente

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

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

sudo nano /etc/rsyslog.conf

Y permitir la conservación de FQDN: como alternativa, hacer que rsyslog envíe con el nombre de dominio completo (FQDN, como system1.example.com) en lugar de simplemente 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

Para el final, agregue las siguientes variables en caso de que el servidor rsyslog se caiga:

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

Luego reinicie el servicio rsyslog:

sudo systemctl restart rsyslog

Verificar los registros

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

Vaya a su servidor Rsyslog para verificar los registros de su máquina cliente:

$ ls /var/log/

Encontrarás algo como esto:

Listado de directorios y archivos var / logLista / var / log

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

Lista de archivos var / log / hostnameListar var / log / hostname

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

Puede verificar cualquiera de estos registros con el siguiente comando: Let’s for example inspeccionar systemd.log.

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

Y verá algo como esto:

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-:[email protected].
2021-03-25T11:32:31+00:00 obrad systemd[1206]: dbus-:[email protected]: Succeeded.

Como puede ver, lancé la edición de texto de terminal y gedit en mi máquina cliente y Rsyslog generó y mostré esto en la salida.

Conclusión

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