GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo crear una configuración Rsyslog de registro centralizado

Los registros son una parte crítica de las aplicaciones y la infraestructura del servidor, pero analizarlos puede ser una molestia si están abarrotados por todas partes. ¿Por qué no crear un sistema de registro centralizado? ¡Rsyslog puede ser justo lo que está buscando!

Un sistema de registro centralizado le permite recopilar registros de varios servidores/aplicaciones en el servidor de registro central. Y en este tutorial, aprenderá a configurar el registro centralizado mediante la configuración de Rsyslog en servidores Linux.

¡Prepárate y lánzate de inmediato!

Requisitos

Este tutorial será una demostración práctica. Si desea seguirlo, asegúrese de tener lo siguiente:

  • Dos o más servidores Linux:este tutorial utiliza tres servidores Debian 11 llamados central-rsyslog , cliente01 y cliente02 .
  • Un usuario con privilegios sudo/root en todos los servidores.

Comprobación del servicio Rsyslog en todos los servidores

Rsyslog es un procesamiento de registro de alto rendimiento para la distribución de Linux, instalado de forma predeterminada en las distribuciones basadas en Debian y RHEL.

Rsyslog es una versión confiable y extendida del protocolo Syslog con características modernas adicionales. Estas características adicionales son múltiples entradas y salidas, modulares y ricas capacidades de filtrado.

En el momento de escribir este artículo, la última versión de Rsyslog es v8.2112.0. Por lo tanto, verificará la versión instalada de Rsyslog en su sistema y el estado del servicio Rsyslog. Si lo hace, se asegura de obtener las funciones más recientes de Rsyslog y de que Rsyslog se ejecuta sin problemas.

1. Abra su terminal, inicie sesión en todos los servidores y ejecute sudo su Comando a continuación para obtener los privilegios de root. Introduzca la contraseña de su usuario cuando se le solicite.

sudo su

2. A continuación, ejecute el rsyslogd Comando para verificar la versión de Rsyslog instalada en su sistema.

Asegúrese de tener Rsyslog v8.xxx en su sistema porque algunas configuraciones solo están disponibles en Rsyslog v8.xxx.

# checking rsyslog version
rsyslogd -v

Como puede ver a continuación, el sistema Debian 11 viene con Rsyslog v8.2102.0 predeterminado.

3. Por último, ejecuta el systemctl Comando a continuación para verificar el servicio Rsyslog. Asegúrate de que el servicio Rsyslog sea active (running). .

# verify rsyslog service status
sudo systemctl status rsyslog

Como puede ver a continuación, el servicio Rsyslog está activo (en ejecución).

Configuración de Rsyslog para registro centralizado

Ahora que tiene la última versión de Rsyslog en ejecución, es hora de configurar el registro centralizado mediante la configuración de Rsyslog en central-rsyslog servidor.

Para configurar el registro centralizado, habilitará el módulo de entrada Rsyslog UDP imudp y cree la plantilla Rsyslog para recibir mensajes de registro de otros servidores. Los imudp módulo de entrada proporciona la capacidad para el central-rsyslog servidor para recibir mensajes Syslog a través del protocolo UDP.

1. Edite el archivo de configuración de Rsyslog (/etc/rsyslog.conf ) usando su editor preferido y habilite la configuración que se muestra a continuación, luego guarde los cambios y salga del editor.

A lo largo de este tutorial, elimine los comentarios de cada configuración para habilitarlas eliminando el signo # al principio de cada línea.

Esta configuración permite que el módulo de entrada imudp se ejecute en el puerto UDP 514 predeterminado.

2. A continuación, cree una nueva plantilla Rsyslog (/etc/rsyslog.d/50-remote-logs.conf ) con su editor preferido y complete la plantilla con la configuración a continuación. Guarde los cambios y salga del editor.

Esta plantilla de Rsyslog a continuación habilita central-rsyslog servidor para almacenar registros de servidores remotos en el directorio /var/log/remotelogs/ .

# define template for remote loggin
# remote logs will be stored at /var/log/remotelogs directory
# each host will have specific directory based on the system %HOSTNAME%
# name of the log file is %PROGRAMNAME%.log such as sshd.log, su.log
# both %HOSTNAME% and %PROGRAMNAME% is the Rsyslog message properties
template (
    name="RemoteLogs"
    type="string"
    string="/var/log/remotelogs/%HOSTNAME%/%PROGRAMNAME%.log"
)

# gather all log messages from all facilities
# at all severity levels to the RemoteLogs template
*.* -?RemoteLogs

# stop the process once the file is written
stop

3. Ejecute los siguientes comandos para crear un nuevo directorio de registro (/var/log/remotelogs/ ) propiedad de root usuario con adm grupo. Hacerlo permite que el servicio Ryslog escriba registros en el /var/log/remotelogs directorio.

# create /var/log/remotelogs/ directory
mkdir -p /var/log/remotelogs/

# change the ownership to root:adm
sudo chown -R root:adm /var/log/remotelogs/

4. Ahora, ejecuta el rsyslogd comandos a continuación para verificar las configuraciones de Rsyslog (/etc/rsyslog.conf/etc/rsyslog.d/50-remote-logs.conf ).

Asegúrese de comprobar y verificar siempre la configuración de Rsyslog después de editar la configuración de Rsyslog para asegurarse de que la configuración no tenga errores.

# verify /etc/rsyslog.conf
rsyslogd -N1 -f /etc/rsyslog.conf

# verify /etc/rsyslog.d/50-remote-logs.conf
rsyslogd -N1 -f /etc/rsyslog.d/50-remote-logs.conf

Si no hay ningún error, obtendrá un resultado como el que se muestra a continuación.

5. Después de verificar las configuraciones, ejecute el siguiente comando para restart el rsyslog servicio y aplicar nuevas configuraciones.

El servicio Rsyslog ya se está ejecutando con el módulo de entrada imudp habilitado y abrió el puerto UDP 514 predeterminado para el protocolo Syslog. El central-rsyslog el servidor ahora está listo para recibir mensajes de registro de otros hosts.

# restart rsyslog
sudo systemctl restart rsyslog

6. Por último, ejecuta el ss Comando a continuación para verificar los puertos abiertos en su sistema.

# check open ports
ss -plntu

A continuación, puede ver que el servicio Rsyslog con el módulo de entrada imudp habilitado se ejecuta en el puerto UDP 514 predeterminado.

Enviar registros al servidor Rsyslog centralizado

Por ahora, ha configurado la administración centralizada de registros con la configuración de Rsyslog en central-rsyslog servidor. Pero, ¿cómo conoce el central-rsyslog servidor recibe registros? Enviará registros de forma remota al servidor Rsyslog centralizado (central-rsyslog ) habilitando y configurando el módulo de salida Rsyslog en la máquina cliente.

En esta demostración, la máquina cliente (con el nombre de host client01) usa el módulo de salida Rsyslog omfwd para enviar registros a central-rsyslog servidor.

El omfwd module es un módulo incorporado que procesa mensajes/registros a través de plantillas Rsyslog. Luego, el módulo transfiere los mensajes a varios destinos a través de UDP y TCP utilizando el objeto de acción Rsyslog.

1. Mover al cliente01 máquina para configurar y enviar registros a central-rsyslog servidor.

2. Cree una nueva configuración de Rsyslog (/etc/rsyslog.d/20-forward-logs.conf ) con su editor preferido y complete la siguiente configuración.

Esta configuración formatea los mensajes de registro utilizando la plantilla de SendRemote y reenvía los mensajes de registro a través del protocolo UDP al destino central-rsyslog servidor (172.16.1.10). Asegúrese de cambiar la dirección IP con la dirección IP de su servidor Rsyslog central.

Una plantilla de Rsyslog es una construcción de las propiedades de los mensajes de Rsyslog que especifican los formatos de los mensajes de registro. Consulte la documentación de la plantilla Rsyslog para ver diferentes tipos de plantillas.

# process all log messages before sending
# with the SendRemote template
template(
    name="SendRemote"
    type="string"
    string="<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%"
)

# forward log messages using omfwd module
# to the target server 172.16.1.10
# via UDP porotocol on port 514
# log messages is formatted using the SendRemote template
# setup queue for remote log
action(
    type="omfwd"
    Target="172.16.1.10"
    Port="514"
    Protocol="udp"
    template="SendRemote"

    queue.SpoolDirectory="/var/spool/rsyslog"
    queue.FileName="remote"
    queue.MaxDiskSpace="1g"
    queue.SaveOnShutdown="on"
    queue.Type="LinkedList"
    ResendLastMSGOnReconnect="on"
)

# stop process after the file is written
stop

3. A continuación, ejecute el siguiente rsyslogd Comando para verificar la configuración de Rsyslog y asegurarse de que no haya ningún error.

# verify rsyslog configuration
rsyslogd -N1 -f /etc/rsyslog.d/20-remote-logs.conf

4. Ejecute el systemctl Comando a continuación para reiniciar el servicio Rsyslog y aplicar una nueva configuración.

# restart rsyslog on client01 machine
sudo systemctl restart rsyslog

5. Ahora, regrese a central-rsyslog servidor para verificar los registros del client01 máquina.

Ejecute los siguientes comandos para navegar al directorio /var/log/remotelogs y enumere los archivos y directorios dentro de ese directorio para verificar el client01 el directorio existe.

# navigate to /var/log/remotelogs directory
cd /var/log/remotelogs/
# checking available directories
ls -lah

A continuación, puede ver que el directorio client01 existe en /var/log/remotelogs directorio.

6. Ejecute cada comando a continuación para cambiar a client01 directorio y lista (ls -lah ) los archivos de registro dentro del directorio.

# navigate to client01 directory
cd client01/
# checking files inside client01 directory
ls -lah

Un sistema de registro centralizado ayuda a los administradores a analizar los datos de registro de cientos de servidores en una sola máquina.

Elija uno de los registros que desea ver y analizar.

7. Por último, ejecuta el cat Comando a continuación para ver el contenido de su registro de destino. Reemplazar logfile con el nombre del archivo de registro, pero esta demostración devuelve el contenido de sshd.log expediente.

cat logfile

A continuación, puede ver los registros del client01 máquina almacenada en sshd.log archivo en el servidor Rsyslog (central-rsyslog ).

Hasta ahora, ha visto que un sistema de registro centralizado hace que los archivos de registro sean más seguros porque cada vez que se terminan las aplicaciones o los servidores, todavía tiene los archivos de registro en el servidor central.

Enviar registros de un programa específico al servidor Rsyslog

Acaba de enviar todos los registros de la aplicación desde client01 máquina al servidor Rsyslog central (central-rsyslog ). Pero, ¿qué sucede si solo necesita registros de aplicaciones específicos, como ssh? o su ? Implemente la estructura de control Rsyslog rainerscript en el objeto de acción Rsyslog.

Esta demostración utiliza client02 máquina para enviar registros sshd solo al servidor Rsyslog (central-rsyslog ).

1. Mover al cliente02 máquina para configurar y enviar registros a central-rsyslog servidor.

2. Cree una nueva configuración de Rsyslog (/etc/rsyslog.d/50-sshd.conf ) con su editor preferido y complete la siguiente configuración.

Esta configuración a continuación solo reenvía los registros de la aplicación (nombre del programa) denominada sshd al servidor Rsyslog (172.16.1.10). Los mensajes de registro también están formateados por la plantilla SendRemote.

# create new Rsyslog tempate for formatted logs
template(
    name="SendRemote"
    type="string"
    string="<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%"
)

# implementation of if conditional on rsyslog
# to send specific logs for programname sshd
# stop the process after sending logs
if $programname == "sshd" then {
        action(type="omfwd" target="172.16.1.10" port="514" protocol="udp" template="SendRemote")
        stop
}

3. A continuación, ejecute el rsyslogd Comando a continuación para verificar la configuración de Rsyslog y asegurarse de que no haya ningún error.

# verify rsyslog configuration
rsyslogd -N1 -f /etc/rsyslog.d/50-sshd.conf

4. Ejecute el siguiente comando para reiniciar el servicio Rsyslog, aplicar una nueva configuración y cerrar sesión en client02 servidor para generar un nuevo sshd Iniciar sesión.

En este punto, el servidor central-rsyslog solo ha recibido el registro sshd en lugar de todos los registros del sistema.

# restart rsyslog service
sudo systemctl restart rsyslog

5. Ahora, regrese a central-rsyslog servidor para verificar los registros del client02 máquina.

Ejecute los siguientes comandos para enumerar (ls -lah) los archivos de registro disponibles en el directorio /var/log/remotelogs/.

# navigate to /var/log/remotelogs/
cd /var/log/remotelogs/
# verify log directory for client02
ls -lah

Como puede ver a continuación, hay un nuevo directorio llamado client02 que almacena los mensajes de registro del client02 máquina.

6. Ejecute los siguientes comandos para navegar al client02 directorio y verifique los archivos de registro disponibles en ese directorio.

cd client02/
ls -lah

Verá el archivo de registro sshd.log para el nombre del programa sshd. Además, ejecute el comando cat para mostrar el contenido del archivo de registro sshd.log.

A continuación, puede ver solo un archivo de registro disponible, el archivo sshd.log, ya que usó la configuración /etc/rsyslog.d/50-sshd.conf.

7. Finalmente, ejecuta el cat Comando a continuación para ver y analizar el sshd.log expediente.

cat sshd.log

Enviar registros convertidos de mensajes Syslog al servidor Rsyslog

Hasta ahora, ha visto cómo enviar registros a su servidor Rsyslog y eso es suficiente. Pero quizás prefiera tener sus registros en formato de mensaje Syslog para que sean más fáciles de leer y analizar. Si es así, usando Rsys imfile módulo de entrada hará el truco.

El imfile El módulo de entrada le permite convertir cualquier mensaje de texto/registros en un formato de mensaje Syslog. Y en esta demostración, enviará registros del servidor web Apache2 desde client01 máquina al servidor Rsyslog (central-rsyslog ).

Combinando el módulo de entrada Rsyslog (imfile ) con el módulo de salida (omfwd ) le permite enviar cualquier registro convertido por mensaje Syslog al servidor Rsyslog (central-rsyslog ).

1. Vuelva al cliente01 máquina, cree una nueva configuración de Rsyslog /etc/rsyslog.d/50-apache2.conf y complete la siguiente configuración. Asegúrese de cambiar el nombre de la plantilla, el nombre del conjunto de reglas y el archivo de entrada para sus registros.

La siguiente plantilla convierte los registros de Apache al formato de mensaje Syslog con el módulo imfile y envía esos registros al servidor Rsyslog (172.16.1.10).

# deifne global workDirectory for saving the state file of log messages.
global(workDirectory="/var/spool/rsyslog")

# enable the Rsyslog imfile module processing text files or logs.
module(load="imfile" PollingInterval="10")

# define template for apache2 for processing log messages.
# that will be forwarded to rsyslog server
template(
    name="TestLog"
    type="string"
    string="<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%"
    )

# define ruleset "ApacheLogs" with action object to send logs to rsyslog server
# define the queue
ruleset(name="ApacheLogs") {
    action(
        type="omfwd"
        target="172.16.1.10"
        port="514"
        protocol="udp"
        template="TestLog"

        queue.SpoolDirectory="/var/spool/rsyslog"
        queue.FileName="remote"
        queue.MaxDiskSpace="1g"
        queue.SaveOnShutdown="on"
        queue.Type="LinkedList"
        ResendLastMSGOnReconnect="on"
        )
        stop
}

# define input files Apache2 logs to send to the Rsyslog server
# and apply ruleset "ApacheLogs"
input(type="imfile" ruleset="ApacheLogs" Tag="apache2" File="/var/log/apache2/*.log")

2. A continuación, ejecute rsyslogd comando a continuación para verificar el /etc/rsyslog.d/50-apache2.conf configuración.

# verify rsyslog configuration
rsyslogd -N1 -f /etc/rsyslog.d/50-apache2.conf

3. Ejecute el systemctl comando a continuación a restart el rsyslog servicio y aplicar nuevas configuraciones. En este punto, todos los registros de Apache2 en client01 la máquina se reenviará al servidor Rsyslog (central-rsyslog ).

# restart rsyslog service
sudo systemctl restart rsyslog

4. Ahora, ejecuta el curl Comando a continuación para generar los registros de Apache2. Este comando generará nuevos mensajes de registro de Apache2 en el archivo /var/log/apache2/access.log .

# generate a new log for Apache
# by accessing via curl command
curl localhost
curl localhost/testnotfound

5. Regrese al servidor Rsyslog (central-rsyslog ), y ejecute los siguientes comandos para navegar al /var/log/remotelogs/client01 Lista de directorios de archivos de registro disponibles.

# navigate to the directory /var/log/remotelogs/client01/
cd /var/log/remotelogs/client01/
# check available log files
ls -a

Puede ver a continuación que el servidor Rsyslog (central-rsyslog ) recibió el archivo apache.log del client01 máquina.

6. Por último, ejecuta el cat comando para mostrar el contenido del archivo de registro apache2.log .

# showing the content of apache2.log file
cat apache2.log

Si /etc/rsyslog.d/50-apache2.conf funciona, verá el contenido del archivo de registro en formato de mensaje Syslog como el que se muestra a continuación.

Conclusión

En este tutorial, aprendió cómo configurar el registro centralizado con la configuración de Rsyslog. También envió registros de servidores de forma remota al servidor Rsyslog centralizado utilizando diferentes tipos de complementos de entrada y salida de Rsyslog. Ahora ya no tiene que buscar registros en diferentes lugares además de su servidor Rsyslog.

¿De qué otra manera planeas usar Rsyslog? ¿Quizás comenzar a explorar otros módulos de entrada y salida de Rsyslog? ¿O integrar Rsyslog a otro sistema de registro, como Fluentd y Logstash?


Linux
  1. Cómo configurar rsyslog para la administración centralizada de registros

  2. Cómo habilitar el registro de consultas de MySQL/MariaDB

  3. Cómo crear etiquetas Git

  4. Cómo configurar el registro remoto de Rsyslog en Linux (servidor de registro central)

  5. Cómo registrar paquetes descartados de IPTables Firewall de Linux en un archivo de registro

Cómo crear un archivo Tar Gz

Cómo crear un módulo de Terraform

Cómo iniciar sesión en cPanel

¡Administración centralizada de registros instalando rsyslog en Debian 11!

Cómo crear una base de datos en Plesk

Cómo crear un registro de errores de PHP en cPanel