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?
- Visualización de Syslogs locales
- Configuración del servidor para el registro del sistema remoto
- Configuración del cliente para ver Syslogs remotos
- Probar la operación de registro
- Conclusión
¿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
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
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:

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

Si aún no está instalado, puede instalarlo usando el dnf
mando:
$ sudo dnf install 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 ...

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

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

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 ...

*.*
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"

En el sistema del servidor encontrará un directorio separado creado para cada cliente (y 1 directorio para el propio sistema 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

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.