¿Qué es Syslog en Linux? Una guía paso a paso para configurar el registro remoto del sistema

En este tutorial, veremos Syslog en Linux y cómo enviar registros a una máquina remota usándolo. Syslog es un estándar para el registro de mensajes. Ha sido el mecanismo de registro estándar en los sistemas Linux/Unix durante mucho tiempo. Aunque la mayoría de las distribuciones ahora se envían con journald – a systemd registrador basado en: Syslog todavía existe y generalmente se usa junto con journald .

Tabla de contenido

¿Qué es Syslog?

Syslog es un concepto vago, generalmente se refiere a las siguientes 3 cosas:

  • Demonio Syslog : Es un demonio que escucha los registros y los escribe en una ubicación específica. La(s) ubicación(es) se define(n) en el archivo de configuración del daemon. rsyslog es el demonio de Syslog incluido con la mayoría de las distribuciones.
  • Formato de mensaje de Syslog : Se refiere a la sintaxis de los mensajes de Syslog. La sintaxis suele estar definida por un estándar (por ejemplo, RFC5424 ).
  • Protocolo Syslog : Se refiere al protocolo utilizado para el registro remoto. Los demonios Syslog modernos pueden usar TCP y TLS además de UDP, que es el protocolo heredado para el registro remoto.

La ventaja de Syslog sobre journald es que los registros se escriben en archivos que se pueden leer usando comandos básicos de manipulación de texto como cat, grep, tail, etc.

journald los registros están escritos en binario y necesita usar el journalctl Comando para verlos.

Visualización de Syslogs locales

Los registros son una gran fuente de información sobre lo que sucede en el sistema. También son el primer lugar donde uno debe buscar cualquier tipo de solución de problemas.

Generalmente, los registros se escriben bajo el /var/log directorio. La forma en que se estructura este directorio depende de su distribución.

Nota: Este método solo funciona para registros escritos por un demonio Syslog y no para registros escritos por journald .

1. Mostrar syslogs con el comando ls

enumerar los contenidos de /var/log para una máquina Ubuntu 20.04 usando el comando ls:

                      
$ sudo ls /var/log

                    
Listado/var/registro

2. Ver los registros del sistema en Linux usando el comando tail

Con el comando tail puede ver los últimos registros. Agregar la opción -f le permite verlos en tiempo real.

Para sistemas basados ​​en RedHat:

                      
$ sudo tail -f /var/log/messages

                    

Para sistemas basados ​​en Ubuntu/ Debian :

                      
$ sudo tail -f /var/log/syslog

                    

Del mismo modo, el tail El comando se puede usar para ver los registros del kernel ( kern.log ), registros de arranque ( boot.log ), etc .

Las reglas para las que van los registros están definidas en el archivo de configuración del demonio Syslog. Para rsyslog está /etc/rsyslog.conf

3. Ver y editar syslogs en Linux con un editor de texto

Miremos a rsyslog el archivo de configuración usando el editor nano :

                      
$ sudo nano /etc/rsyslog.conf

                    
Configuración de rsylog

Como se puede ver en la captura de pantalla, utiliza imjournal módulo para leer los mensajes del diario. Al desplazarse por el archivo, se pueden ver las reglas para la ubicación de los registros:

Configuración Rsylog2 Configuración de rsylog

Nota: Para algunas distribuciones, las reglas de ubicación se definen por separado en /etc/rsyslog.d/50-default.conf

El ‘kern’, ‘info’, etc. al comienzo de algunas líneas son ‘códigos de instalación’ según lo define el estándar Syslog. Puede encontrar más información sobre los códigos de instalación y otras partes del estándar Syslog en esta página de wikipedia .

Syslog también admite el registro remoto a través de la red además del registro local. Sigue una arquitectura de servidor/cliente para el registro remoto. A continuación, veremos cómo configurar esta arquitectura de servidor/cliente para que los mensajes se puedan registrar de forma remota.

Configuración del servidor para el registro del sistema remoto

Estaremos configurando un CentOS 8 máquina como el servidor remoto que recibe mensajes Syslog de hosts a través de TCP. Necesitarás privilegios de superusuario para cada paso. Entonces, cambie al usuario raíz o al prefijo sudo antes de cada comando.

1. Compruebe si rsyslog está instalado

rsyslog es el demonio Syslog que escuchará los registros del host. Para comprobar si está instalado, escriba:

                      
$ rsyslogd -v

                    

Imprimirá alguna información si está instalado

Comprobar Rsyslog 1 Comprobar Rsyslog 1

Si aún no está instalado, puede instalarlo usando el dnf mando:

                      
$ sudo dnf install rsyslog

                    
Instalar Rsyslog Instalar rsyslog

2. Edite el archivo de configuración de rsyslog

El archivo que necesitamos modificar es /etc/rsyslog.conf . Puede utilizar el editor de su elección. estaré usando el editor nano .

                      
$ sudo nano /etc/rsyslog.conf

                    

También puede agrupar los registros mediante la creación de directorios separados para sistemas cliente separados usando lo que rsyslog llama ‘plantillas’. Estas plantillas son directivas para rsyslog .

Para habilitar la agrupación de registros por sistemas, agregue las líneas 7 y 8. Para habilitar TCP, descomente las líneas 4 y 5 eliminando el carácter ‘#’ al comienzo de la línea.

                      
...
# Provides TCP syslog reception
# for parameters see https://www.rsyslog.com/doc/imtcp.html
module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")

$template FILENAME,"/var/log/%HOSTNAME%/syslog.log"
*.* ?FILENAME
...

                    
Editar configuración 2 Editar configuración

3. Configure el firewall para abrir el puerto utilizado por rsyslog

Por defecto rsyslog escucha en el puerto 514. Necesitamos abrir este puerto usando el comando firewall-cmd:

                      
$ sudo firewall-cmd  --add-port=514/tcp  --zone=public  --permanent
$ sudo firewall-cmd --reload

                    
Abrir puerto TCP 514 Abrir puerto TCP 514

4. Reinicie rsyslog

Ahora que hicimos cambios en el archivo de configuración y abrimos el puerto, necesitamos reiniciar rsyslog para que pueda recoger la nueva configuración. Podemos reiniciar rsyslog utilizando el systemctl mando:

                      
$ sudo systemctl restart rsyslog

                    

Si desea que rsylog se inicie automáticamente cada vez que inicie, escriba:

                      
$ sudo systemctl enable rsyslog

                    

5. Compruebe si rsyslog está escuchando en el puerto abierto

Podemos usar el comando netstat para listar todos los puertos abiertos:

                      
$ sudo netstat -pnlt

                    
Uso de Netstat para comprobar los puertos abiertos Uso de Netstat para comprobar los puertos abiertos

Como se destaca en la captura de pantalla anterior, rsyslog está escuchando en el puerto 514.

Configuración del cliente para ver Syslogs remotos

Cada cliente tendrá que ser configurado por separado. Para configurar el cliente:

1. Compruebe si rsyslog está instalado

En los sistemas cliente también rsyslog necesita ser instalado. Si aún no está instalado, puede instalarlo siguiendo los mismos pasos que para el servidor.

2. Edite el archivo de configuración de rsyslog

Solo se necesita agregar 1 línea para el cliente /etc/rsyslog.conf expediente. Ábralo con el editor de su elección:

                      
$ sudo nano /etc/rsyslog.conf

                    

Y añade la siguiente línea:

                      
...
*.* @@<server's-ip-address>:514
...

                    
Configuración del lado del cliente 1 Configuración del lado del cliente

*.* dice rsyslog para reenviar todos los registros. los @@ significa una conexión TCP y 514 es el número de puerto. Es posible que deba configurar el firewall para abrir el puerto no. 514 en los sistemas cliente también si el cliente tiene un firewall configurado. En ese caso, siga los mismos pasos que para el servidor.

3. Reinicie rsyslog

Necesitamos reiniciar rsyslog en los sistemas del cliente, así como el uso de la systemctl mando:

                      
$ sudo systemctl restart rsyslog
$ sudo systemctl enable rsyslog

                    

Probar la operación de registro

En su sistema cliente escribe:

                      
$ logger "I just logged a message"

                    
Registrador Registrador

En el sistema del servidor encontrará un directorio separado creado para cada cliente (y 1 directorio para el propio sistema del servidor).

Directorios del servidor 1 Directorios del servidor

Ver el contenido de /var/log/earth66 / syslog.log usando el comando tail en el sistema del servidor :

                      
$ sudo tail -f /var/log/earth66/syslog.log

                    
Registro remoto Registro remoto

Conclusión

En este tutorial, aprendimos sobre Syslog y configuramos el registro remoto usando rsyslog . Verificar los registros es una de las primeras y más importantes partes de la resolución de problemas. Saber cómo ver y comprender los registros puede ayudar a ahorrar tiempo y esfuerzo. Para saber más sobre las características de rsyslog y su configuración, mira su página man y documentación.

Related Posts