GNU/Linux >> Tutoriales Linux >  >> Linux

Guía completa de registro de Linux

Como administrador del sistema Linux, inspeccionar archivos de registro es una de las tareas más comunes que puede tener que realizar.

Registros de Linux son cruciales:almacenan información importante sobre algunos errores que pueden ocurrir en su sistema.

También pueden almacenar información sobre quién intenta acceder a su sistema, qué está haciendo un servicio específico o sobre un bloqueo del sistema que ocurrió anteriormente.

En consecuencia, saber localizar , manipular y analizar archivos de registro es definitivamente una habilidad que tienes que dominar.

En este tutorial, vamos a desvelar todo lo que hay que saber sobre registro de Linux.

Se le presentará la forma en que se estructura el registro en los sistemas Linux y cómo los diferentes dispositivos y procesos virtuales interactúan entre sí para registrar las entradas.

Vamos a profundizar en el protocolo Syslog y cómo pasó de syslogd (en sistemas antiguos) a journalctl impulsado por systemd en sistemas recientes.

Tipos de registro de Linux

Cuando se trata del registro de Linux, hay algunos conceptos básicos que debe comprender antes de escribir cualquier comando en la terminal.

En Linux, tiene dos tipos de mecanismos de registro:

  • Registro del núcleo :relacionado con errores, advertencias o entradas de información que su kernel puede escribir;
  • Registro de usuario :vinculado al espacio del usuario, esas entradas de registro están relacionadas con procesos o servicios que pueden ejecutarse en la máquina host.

Al dividir el inicio de sesión en dos categorías, esencialmente revelamos que la memoria en sí misma se divide en dos categorías en Linux:espacio de usuario y espacio del núcleo .

Registro del núcleo

Comencemos primero con el registro asociado con el espacio del núcleo, también conocido como registro del núcleo.

En el espacio del kernel, el registro se realiza a través del buffer de anillo del kernel.

El búfer de anillo del núcleo es un búfer circular que es la primera estructura de datos que almacena mensajes de registro cuando se inicia el sistema.

Cuando está iniciando su máquina Linux, si se muestran mensajes de registro en la pantalla, esos mensajes se almacenan en el búfer de anillo del kernel.

El registro del kernel se inicia antes del registro del usuario (administrado por el demonio syslog o por rsyslog en distribuciones recientes).

Se puede inspeccionar el búfer de anillo del núcleo, casi como cualquier otro archivo de registro en su sistema.

Para abrir registros relacionados con el Kernel en su sistema, debe usar el "dmesg ” comando.

Nota :debe ejecutar este comando como root o tener derechos privilegiados para inspeccionar el búfer de anillo del kernel.

$ dmesg

Como puede ver, desde el inicio del sistema hasta el momento en que ejecutó el comando, el núcleo realiza un seguimiento de todas las acciones, advertencias o errores que pueden ocurrir en el espacio del núcleo.

Si su sistema tiene problemas para detectar o montar un disco, probablemente sea aquí donde desee inspeccionar los errores.

Como puede ver, el comando dmesg es una interfaz bastante agradable para ver los registros del kernel, pero ¿cómo le devuelve esos resultados el comando dmesg?

Para desvelar los diferentes mecanismos utilizados, veamos qué procesos y dispositivos se encargan del registro del Kernel .

Conceptos internos de registro del kernel

Como probablemente haya escuchado antes, en Linux, todo es un archivo.

Si todo es un archivo, también significa que los dispositivos son archivos.

En Linux, el búfer de anillo del kernel se materializa mediante un archivo de dispositivo de caracteres en el directorio /dev y se denomina kmsg.

$ ls -l /dev/ | grep kmsg

Si tuviéramos que representar la relación entre el dispositivo kmsg y el búfer de anillo del núcleo, así es como lo representaríamos.

Como puede ver, el dispositivo kmsg es una abstracción se utiliza para leer y escribir en el búfer de anillo del kernel.

Esencialmente, puede verlo como un punto de entrada para los procesos del espacio de usuario para escribir en el búfer de anillo del kernel.

Sin embargo, el diagrama que se muestra arriba está incompleto ya que el kernel utiliza un archivo especial para volcar la información de registro del kernel en un archivo.

Si tuviéramos que resumirlo, diríamos esencialmente que el dispositivo virtual kmsg actúa como un punto de entrada para el búfer de anillo del núcleo mientras que la salida de este proceso (las líneas de registro) se imprimen en el archivo /proc/kmsg.

Este archivo puede ser analizado por un solo proceso que es la mayoría de las veces la utilidad de registro utilizada en el espacio del usuario. En algunas distribuciones, puede ser syslogd, pero en distribuciones más recientes está integrado con rsyslog.

La utilidad rsyslog tiene un conjunto de módulos incorporados que redirigirán los registros del kernel a archivos dedicados en el sistema de archivos.

Históricamente, los registros del núcleo eran recuperados por el daemon klogd en sistemas anteriores, pero ha sido reemplazado por rsyslog en la mayoría de las distribuciones.

Por un lado, tiene utilidades de registro que leen desde el búfer circular, pero también tiene programas de espacio de usuario que escriben en el búfer circular:systemd (con el famoso systemd-journal) en distribuciones recientes, por ejemplo.

Ahora que sabe más sobre el registro del Kernel, veamos cómo se realiza el registro en el espacio del usuario.

Registro del lado del usuario con Syslog

Iniciar sesión en el espacio de usuario es bastante diferente de iniciar sesión en el espacio del kernel.

Por parte del usuario, el registro se basa en el protocolo Syslog .

Syslog se utiliza como estándar para producir, reenviar y recopilar registros producidos en una instancia de Linux.

Syslog define los niveles de gravedad, así como los niveles de instalación, lo que ayuda a los usuarios a comprender mejor los registros producidos en sus computadoras.

Los registros pueden luego analizarse y visualizarse en servidores denominados servidores Syslog.

En resumen, el protocolo Syslog es un protocolo utilizado para definir los mensajes de registro que se formatean, envían y reciben en los sistemas Unix.

Syslog es conocido por definir el formato syslog que define el formato que deben usar las aplicaciones para enviar registros.

Este formato es conocido por definir dos términos importantes:instalaciones y prioridades .

Explicación de las instalaciones de Syslog

En resumen, un nivel de instalación se utiliza para determinar el programa o parte del sistema que produjo los registros.

En su sistema Linux, muchas utilidades y programas diferentes están enviando registros. Para determinar qué proceso envió el registro en primer lugar, Syslog define números, números de instalaciones, que utilizan los programas para enviar registros de Syslog.

Hay más de 23 instalaciones de Syslog diferentes que se describen en la siguiente tabla.

La mayoría de esas funciones están reservadas para los procesos del sistema (como el servidor de correo, si tiene uno, o la utilidad cron). Algunos de ellos (del número de instalación 16 al 23) pueden ser utilizados por programas personalizados de cliente o usuario de Syslog para enviar registros.

Explicación de las prioridades de Syslog

Niveles de gravedad de Syslog están acostumbrados a la gravedad de un evento de registro y van desde depuración, mensajes informativos hasta niveles de emergencia.

De manera similar a los niveles de las instalaciones de Syslog, los niveles de gravedad se dividen en categorías numéricas que van del 0 al 7, siendo 0 el nivel de emergencia más crítico. .

Nuevamente, aquí hay una tabla para todos los niveles de prioridad disponibles con Syslog.

Estos son los niveles de gravedad de syslog descritos en una tabla:

Código numérico Palabra clave Nombre de la instalación
0 kern Mensajes del núcleo
1 usuario Mensajes a nivel de usuario
2 correo Sistema de correo
3 demonio Demonios del sistema
4 autenticación Mensajes de seguridad
5 syslog Mensajes Syslogd
6 lpr Subsistema de impresora de línea
7 noticias Subsistema de noticias de la red
8 uucp Subsistema UUCP
9 cron Demonio de reloj
10 autorpriv Mensajes de seguridad
11 ftp Demonio FTP
12 ntp Subsistema NTP
13 seguridad Auditoría de registro de seguridad
14 consola Alertas de registro de consola
15 solaris-cron Registros de programación
16-23 local0 a local7 Instalaciones de uso local

Arquitectura Syslog

Syslog también define un par de términos técnicos que se utilizan para construir la arquitectura de los sistemas de registro:

  • Creador :también conocido como "cliente Syslog", un emisor es responsable de enviar el mensaje con formato Syslog a través de la red o a la aplicación correcta;
  • Retransmisión :se utiliza un relé para reenviar mensajes a través de la red. Un repetidor puede transformar los mensajes para enriquecerlos, por ejemplo (ejemplos famosos incluyen Logstash o fluentd);
  • Coleccionista :también conocidos como "servidores Syslog", los recopiladores se utilizan para almacenar, visualizar y recuperar registros de múltiples aplicaciones. El recopilador puede escribir registros en una amplia variedad de salidas diferentes:archivos locales, bases de datos o cachés.

Como puede ver, el protocolo Syslog sigue la arquitectura cliente-servidor hemos visto en tutoriales anteriores.

Un cliente de Syslog crea mensajes y los envía a retransmisiones locales o distantes opcionales que pueden transferirse posteriormente a los servidores de Syslog.

Ahora que sabe cómo está estructurado el protocolo Syslog, ¿qué pasa con nuestro propio sistema Linux?

¿Sigue esta arquitectura?

Arquitectura de registro local de Linux

Iniciar sesión en un sistema Linux local sigue los principios exactos que hemos descrito antes.

Sin más preámbulos, esta es la forma en que se estructura el registro en un sistema Linux (en distribuciones recientes)

Siguiendo la arquitectura originator-relay-colector descrita anteriormente, en el caso de un sistema Linux local:

  • Los creadores son aplicaciones cliente que pueden incrustar bibliotecas syslog o journald para enviar registros;
  • No se implementan repetidores de forma predeterminada localmente;
  • Los recopiladores son rsyslog y el demonio journald escucha en sockets predefinidos para registros entrantes.

Entonces, ¿dónde se almacenan los registros una vez recibidos por los recopiladores?

Ubicación del archivo de registro de Linux

En su sistema Linux, los registros se almacenan en /var/log directorio.

Los registros en el directorio /var/log se dividen en las instalaciones de Syslog que vimos anteriormente seguidas por el sufijo de registro:auth.log, daemon.log, kern.log o dpkg.log.

Si inspeccionó el archivo auth.log, se le presentarán registros relacionados con la autenticación y autorización en su sistema Linux.

De manera similar, el archivo cron.log muestra información relacionada con el servicio cron en su sistema.

Sin embargo, como puede ver en el diagrama anterior, coexisten dos sistemas de registro diferentes en su servidor Linux:rsyslog y systemd-journal.

Coexistencia entre Rsyslog y systemd-journal

Históricamente, un demonio fue responsable de recopilar registros de sus aplicaciones en Linux.

En muchas distribuciones antiguas, esta tarea se asignaba a un demonio llamado syslogd. pero fue reemplazado en distribuciones recientes por el demonio rsyslog .

Cuando systemd reemplazó el proceso init existente en distribuciones recientes, vino con su propia forma de recuperar y almacenar registros:systemd-journal.

Ahora, los dos sistemas coexisten pero se pensó que su coexistencia era retrocompatible con las formas en que solían diseñarse los registros en el pasado.

La principal diferencia entre rsyslog y systemd-journal es que rsyslog conservará los registros en los archivos de registro disponibles en /var/log mientras que journald no conservar datos a menos que esté configurado para hacerlo.

Ubicación de los archivos de registro del diario

Como entendió en la última sección, el systemd-journal La utilidad también realiza un seguimiento de las actividades de registro en su sistema.

Algunas aplicaciones que están configuradas como servicios (por ejemplo, un servidor Apache HTTP) pueden comunicarse directamente con el diario systemd.

El diario systemd almacena registros de forma centralizada en /run/log/journal directorio.

Los archivos de registro se almacenan como archivos binarios por systemd, por lo que no podrá inspeccionar los archivos con los comandos habituales cat o less.

En su lugar, desea utilizar el "journalctl ” para inspeccionar los archivos de registro creados por systemd-journal.

$ journalctl

Hay muchas opciones diferentes que puede usar con journalctl, pero la mayoría de las veces desea quedarse con la opción "-r" y "-u".

Para ver las últimas entradas del diario, utilice “journalctl ” con el “-r ” opción.

$ journalctl -r

Si desea ver los registros relacionados con un servicio específico , use la opción “-u” y especifique el nombre del servicio.

$ journalctl -u <service>

Por ejemplo, para ver los registros relacionados con el servicio SSH, ejecutaría el siguiente comando

$ journalctl -u ssh

Ahora que ha visto cómo puede leer archivos de configuración, veamos cómo puede configurar fácilmente sus utilidades de registro.

Configuración de registro de Linux

Como probablemente entendió de las secciones anteriores, el registro de Linux se basa en dos componentes importantes:rsyslog y systemd-journal.

Cada una de esas utilidades tiene su propio archivo de configuración y vamos a ver en los siguientes capítulos cómo se pueden configurar.

Configuración del diario Systemd

Los archivos de configuración para el diario systemd se encuentran en /etc/systemd directorio.

$ sudo vi /etc/systemd/journald.conf

El archivo llamado “journald.conf ” se usa para configurar el daemon de diario sobre distribuciones recientes.

Una de las opciones más importantes en la configuración de la revista es el “Almacenamiento ” parámetro.

Como se especifica anteriormente, los archivos de diario no se conservan en su sistema y se perderán en el próximo reinicio.

Para que sus registros de diario sean persistentes, asegúrese de modificar este parámetro a "persistente" y de reiniciar su demonio de diario systemd.

Para reiniciar el demonio de diario, use el comando "systemctl" con la opción "reiniciar" y especifique el nombre del servicio.

$ sudo systemctl restart systemd-journald

Como consecuencia, los registros diarios se almacenarán en el directorio /var/log/journal junto a los archivos de registro rsyslog.

$ ls -l /var/log/journal

Si tiene curiosidad acerca de la configuración de systemd-journal, asegúrese de leer la documentación proporcionada por FreeDesktop.

Configuración Rsyslog

Por otro lado, el servicio rsyslog se puede configurar a través de /etc/rsyslog.conf archivo de configuración.

$ sudo vi /etc/rsyslog.conf

Como se especificó anteriormente, rsyslog es esencialmente un recopilador de Syslog, pero el concepto principal que debe comprender es que Rsyslog funciona con módulos.

Su arquitectura modular proporciona complementos como formas nativas de transferir registros a un archivo, un shell, una base de datos o sockets.

Al trabajar con rsyslog, hay dos secciones principales que merecen su atención:módulos y reglas .

Rsyslog Módulos

De forma predeterminada, dos módulos están habilitados en su sistema:imuxsock (escuchando en el socket syslog) y imjournal (esencialmente, reenviar registros diarios a rsyslog).

Nota :el imklog (responsable de recopilar los registros del Kernel) también podría estar activado.

Reglas de Rsyslog

Las reglas La sección de rsyslog es probablemente la más importante.

En rsyslog, pero puede encontrar los mismos principios en distribuciones antiguas con systemd, la sección de reglas define qué registro debe almacenarse en su sistema de archivos según su instalación y prioridad.

Como ejemplo, tomemos el siguiente archivo de configuración rsyslog.

La primera columna describe las reglas aplicadas:en el lado izquierdo del punto, define la facilidad y en el lado derecho la gravedad .

Un símbolo comodín "*" significa que funciona para todos los niveles de gravedad.

Como consecuencia, si desea modificar su configuración de registro en orden, digamos, por ejemplo, que está interesado solo en niveles de gravedad específicos, este es el archivo que modificaría.

Utilidades de supervisión de registros de Linux

En la sección anterior, vimos cómo puede configurar fácilmente sus utilidades de registro, pero ¿qué utilidades puede usar para leer fácilmente sus registros de Linux?

La forma más fácil de leer y monitorear sus registros de Linux es usar el comando tail con la opción "-f" para seguir.

$ tail -f <file>

Por ejemplo, para leer los registros escritos en el archivo auth.log, ejecutaría el siguiente comando.

$ tail -f /var/log/auth.log

Otra excelente manera de leer los registros de Linux es usar aplicaciones gráficas si está ejecutando un entorno de escritorio de Linux.

Los "Registros ” application es una aplicación gráfica diseñada para enumerar los registros de la aplicación y del sistema que pueden almacenarse en varios archivos de registro (ya sea en rsyslog o journald).

Utilidades de registro de Linux

Ahora que ha visto cómo se puede configurar el registro en un sistema Linux, veamos un par de utilidades que puede usar en caso de que desee registrar mensajes.

Uso del registrador

El registrador La utilidad es probablemente uno de los clientes de registro más simples de usar.

Logger se usa para enviar mensajes de registro al registro del sistema y se puede ejecutar usando la siguiente sintaxis.

$ logger <options> <message>

Digamos, por ejemplo, que desea enviar un mensaje de emergencia desde la instalación de autenticación a su utilidad rsyslog, ejecutaría el siguiente comando.

$ logger -p auth.emerg "Somebody tried to connect to the system"

Ahora, si inspeccionara el archivo /var/log/auth.log, podría encontrar el mensaje que acaba de registrar en el servidor rsyslog.

$ tail -n 10 /var/log/auth.log | grep --color connect

El registrador es muy útil cuando se usa en scripts de Bash, por ejemplo.

Pero, ¿qué sucede si desea registrar archivos usando systemd-journal?

Uso de systemd-cat

Para enviar mensajes al diario systemd, debe usar el comando "systemd-cat" y especificar el comando que desea ejecutar.

$ systemd-cat <command> <arguments>

Si desea enviar la salida del comando "ls -l" al diario, debe escribir el siguiente comando

$ systemd-cat ls -l

También es posible enviar registros de "texto sin formato" al diario canalizando el comando echo a la utilidad systemd-cat.

$ echo "This is a message to journald" | systemd-cat

Usando la pared

El comando wall no está directamente relacionado con las utilidades de registro, pero puede ser bastante útil para la administración del sistema Linux.

El comando de pared se utiliza para enviar mensajes a todos los usuarios registrados.

$ wall -n <message>

Si, por ejemplo, escribiera un mensaje a todos los usuarios que iniciaron sesión para notificarles sobre el próximo reinicio del servidor, ejecutaría el siguiente comando.

$ wall -n "Server reboot in five minutes, close all important applications"

Conclusión

En este tutorial, aprendió más sobre registro de Linux :cómo está estructurado y cómo los diferentes componentes de registro (es decir, rsyslog y diario ) interactúan juntos.

Aprendiste más sobre el protocolo Syslog y cómo se pueden configurar los recopiladores para registrar eventos específicos en su sistema.

El registro de Linux es un tema amplio y hay muchos más temas para explorar sobre el tema.

¿Sabía que puede crear sistemas de registro centralizados para monitorear los registros en varias máquinas?

Si está interesado en el registro centralizado, ¡asegúrese de leer nuestra guía!

Además, si te apasiona la administración de sistemas Linux, tenemos una sección completa dedicada a ella en el sitio web, ¡así que asegúrate de echarle un vistazo!


Linux
  1. Cómo instalar Void Linux:una guía completa paso a paso

  2. Guía completa para usar AsciiDoc en Linux

  3. Instalar Linux kernel 5.15 en Ubuntu 20.04 - ¿Guía paso a paso?

  4. Guía completa para principiantes sobre el registro de Docker

  5. La guía completa para principiantes de LVM en Linux

Guía completa para instalar OxygenOS en OnePlus One en Linux

La guía completa para usar ffmpeg en Linux

Una guía básica para el proceso de arranque de Linux

Guía completa de administración de usuarios en Linux

Una guía completa para instalar Tomcat en Linux

Comandos de directorio de Linux:una guía completa

    Valor Gravedad Palabra clave
    0 Emergencia emerg
    1 Alerta alert
    2 Crítico crit
    3 Error err
    4 Advertencia warning
    5 Aviso notice
    6 Informativo info
    7 Depuración debug