Aprender Linux, 101: Registro del sistema

2 xmlns=»http://www.w3.org/1999/xhtmlResumen

En este tutorial, aprenda a:

  • Configurar el demonio syslog
  • Entender las instalaciones, prioridades y acciones estándar
  • Configurar la rotación de registros
  • Entender rsyslog y syslog-ng

Qué ocurre dentro de su sistema

Un sistema Linux tiene muchos subsistemas y aplicaciones en ejecución. Usted utiliza el registro del sistema para recopilar datos sobre su sistema en ejecución desde el momento en que arranca. a veces sólo necesita saber que todo está bien. En otras ocasiones, utilizas estos datos para auditar, depurar, saber cuándo un disco u otro recurso se está quedando sin capacidad, y muchos otros propósitos. Puedes recopilar datos de registro en un sistema y reenviarlos a otro para su procesamiento. Los datos de registro pueden mostrarse en un terminal, como el del usuario root, pero lo más frecuente es que se guarden en archivos o se envíen a través de sockets a un servidor de registro. No hace falta decir que el registro es altamente configurable.

La instalación tradicional de syslog y su demonio syslogd proporcionan este registro. Hoy en día, syslog se ha complementado con otras instalaciones de registro como rsyslog, syslog-ng, y el subsistema de diario systemd. En este tutorial le presento estas facilidades.

Este tutorial le ayuda a preparar el Objetivo 108.2 del Tema 108 del examen 102 de Linux Server Professional (LPIC-1). El objetivo tiene una ponderación de 3.

Requisitos previos

Para aprovechar al máximo los tutoriales de esta serie, necesita un conocimiento básico de Linux y un sistema Linux en funcionamiento en el que pueda practicar los comandos cubiertos en este tutorial. Debe estar familiarizado con los comandos GNU y UNIX. A veces, las diferentes versiones de un programa formatean la salida de manera diferente, por lo que sus resultados no siempre se verán exactamente como los listados que se muestran aquí.

En este tutorial, uso Slackware 42.2 para los ejemplos de syslogd, CentOS 7 para los ejemplos de rsyslogd y Fedora 26 para los ejemplos de systemd-journalctl y syslog-ng.

Syslog tradicional y el demonio syslogd

La instalación de registro del sistema syslog tradicional en un sistema Linux proporciona el registro del sistema y la captura de mensajes del núcleo. Puede registrar datos en su sistema local o enviarlos a un sistema remoto. Utilice el archivo de configuración /etc/syslog.conf para controlar con precisión el nivel de registro. El registro lo realiza el demonio syslogd, que normalmente recibe la entrada a través del socket /dev/log, como se muestra en el Listado 1.

Listado 1. /dev/log es un socket
$ #Slackware 42.2 $ /bin/ls -l /dev/log srw-rw-rw- 1 root root 0 Nov 19 16:35 /dev/log
Mostrar másMostrar más icono
xmlns=»http://www.w3.org/1999/xhtmlPara el registro local, el archivo principal suele ser /var/log/messages, pero en la mayoría de las instalaciones se utilizan muchos otros archivos, normalmente ubicados en el directorio /var/log o en un subdirectorio del mismo. Puedes personalizarlos ampliamente. Por ejemplo, puede querer un registro separado para los mensajes del sistema de correo.

El archivo de configuración syslog.conf

El archivo syslog.conf es el principal archivo de configuración para el demonio syslogd. Las entradas en syslog.conf especifican las reglas de registro. Cada regla tiene un campo selector y un campo de acción, que están separados por uno o más espacios o tabulaciones. El campo selector identifica la instalación y las prioridades a las que se aplica la regla, y el campo de acción identifica la acción de registro para la instalación y las prioridades.

Las instalaciones definidas son auth (o seguridad), authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, syslog, user, uucp, y local0 a local7. La palabra clave auth debe utilizarse en lugar de security, y la palabra clave mark es de uso interno.

Las prioridades (en orden ascendente de gravedad) son:

  1. debug
  2. info
  3. notice
  4. warning (o warn)
  5. err (o error)
  6. crit
  7. alert
  8. emerg (o panic)
  9. Las palabras clave entre paréntesis (warn, error, y pánico) están ahora obsoletas.

    El comportamiento por defecto es tomar medidas para el nivel especificado y para todos los niveles superiores, aunque es posible limitar el registro a niveles específicos. Cada selector consiste en una facilidad y una prioridad separadas por un punto. Se pueden especificar varias instalaciones para una acción determinada separándolas con una coma. Se pueden especificar varios pares de instalaciones/prioridades para una acción determinada separándolos con un punto y coma. El listado 2 muestra un ejemplo de un archivo syslog.conf sencillo.

    Listado 2. Ejemplo de syslog.conf
    #Log anything 'warn' or higher. #Exclude authpriv, cron, mail, and news. These are logged elsewhere. #Don't log private authentication messages! *.warn;\ authpriv.none;cron.none;mail.none;news.none -/var/log/syslog #The authpriv file has restricted access. authpriv.* /var/log/secure #Log all the mail messages in one place. mail.* -/var/log/maillog #Log cron stuff cron.* /var/log/cron #Everybody gets emergency messages *.emerg * #Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler
    Mostrar másMostrar más icono
    xmlns=»http://www.w3.org/1999/xhtmlNotas:

    • Como ocurre con muchos archivos de configuración, las líneas que empiezan por # y las líneas en blanco se ignoran.
    • Se puede utilizar un * para referirse a todas las instalaciones o a todas las prioridades.
    • La palabra clave de prioridad especial none indica que no se debe realizar ningún registro para esta instalación con esta acción.
    • El guión antes de un nombre de archivo (como -/var/log/maillog, en este ejemplo) indica que el archivo de registro no debe sincronizarse después de cada escritura. Es posible que se pierda información después de una caída del sistema, pero se puede ganar rendimiento haciendo esto.
      • Las acciones se denominan genéricamente «archivos de registro», aunque no tienen por qué ser archivos reales. La tabla 1 describe los posibles logfiles.

        Tabla 1. Acciones en syslog.conf

        .

        Acción Propósito
        Archivo regular Especificar el nombre completo de la ruta, empezando por una barra (/). Prefiérelo con un guión (-) para omitir la sincronización del archivo después de cada entrada de registro. Esto puede provocar la pérdida de información si se produce un fallo, pero puede mejorar el rendimiento.
        Tuberías con nombre Utilice una tubería con nombre o FIFO (first-in first-out) como destino de los mensajes de registro incluyendo un símbolo de tubería (|) antes del nombre del archivo. Debe crear el FIFO utilizando el comando mkfifo antes de iniciar (o reiniciar) syslogd. Los FIFOs se utilizan a veces para la depuración.
        Terminal o consola Envía los mensajes de registro a un terminal como /dev/console.
        Máquina remota Reenvía los mensajes a otro host poniendo un signo de arroba (@) antes del nombre del host. Tenga en cuenta que los mensajes no se reenvían desde el host receptor.
        Lista de usuarios Usa una lista separada por comas de usuarios para recibir mensajes (si el usuario ha iniciado sesión). El usuario raíz se incluye frecuentemente aquí.
        Todos los que han iniciado sesión Especifique un asterisco (*) para que se notifique a todos los que han iniciado sesión mediante el comando wall.

        Prefija una prioridad con ! para indicar que la acción no debe aplicarse a este nivel y a los superiores. Del mismo modo, prefija una prioridad con = para indicar que la regla se aplica sólo a este nivel o con != para indicar que la regla se aplica a todos excepto a este nivel. El listado 3 muestra algunos ejemplos, y la página man de syslog.conf tiene muchos más ejemplos.

        Listado 3. Ejemplos adicionales de syslog.conf
        #Kernel messages are first, stored in the kernel#file, critical messages and higher ones also go#to another host and to the console#kern.* /var/adm/kernelkern.crit @log‑serverkern.crit /dev/consolekern.info;kern.!err /var/adm/kernel‑info#Store all mail messages except info priority in /var/log/mail. mail.*;mail.!=info /var/log/mail
        Mostrar másMostrar más icono
        xmlns=»http://www.w3.org/1999/xhtmlEl comando syslogd inicia el demonio syslogd. Tiene un número de opciones, incluyendo -f para especificar un archivo de configuración diferente, y -a para escuchar sockets adicionales. El demonio responde a varias señales, incluyendo SIGHUP que hace que se reinicie. Consulte las páginas man o info para obtener más detalles sobre la ejecución y la interacción con el demonio syslogd.

        La lista 4 muestra algunos de los mensajes que podrían registrarse en /var/log/messages utilizando parámetros de configuración de syslogd como los del Listado 2.

        Lista 4. Ejemplo de mensajes registrados en /var/log/messages
        root@attic4‑sl42:~#tail ‑n 20 /var/log/messages Nov 19 21:39:57 attic4‑sl42 kernel: usb 1‑1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3Nov 19 21:39:57 attic4‑sl42 kernel: usb 1‑1.1: Product: USB DISK 2.0Nov 19 21:39:57 attic4‑sl42 kernel: usb 1‑1.1: Manufacturer: Nov 19 21:39:57 attic4‑sl42 kernel: usb 1‑1.1: SerialNumber: 070B53DF11FC0170Nov 19 21:39:57 attic4‑sl42 kernel: usb‑storage 1‑1.1:1.0: USB Mass Storage device detectedNov 19 21:39:57 attic4‑sl42 kernel: scsi host12: usb‑storage 1‑1.1:1.0Nov 19 21:39:57 attic4‑sl42 mtp‑probe: checking bus 1, device 12: "/sys/devices/pci0000:00/0000:00:12.2/usb1/1‑1/1‑1.1" Nov 19 21:39:57 attic4‑sl42 mtp‑probe: bus: 1, device: 12 was not an MTP device Nov 19 21:39:58 attic4‑sl42 kernel: scsi 12:0:0:0: Direct‑Access USB DISK 2.0 PMAP PQ: 0 ANSI: 4Nov 19 21:39:59 attic4‑sl42 kernel: sd 12:0:0:0: 30299520 512‑byte logical blocks: (15.5 GB/14.4 GiB)Nov 19 21:39:59 attic4‑sl42 kernel: sd 12:0:0:0: Write Protect is offNov 19 21:40:00 attic4‑sl42 kernel: sdd: sdd1Nov 19 21:40:00 attic4‑sl42 kernel: sd 12:0:0:0: Attached SCSI removable diskNov 19 21:42:36 attic4‑sl42 kernel: usb 1‑1.1: reset high‑speed USB device number 12 using ehci‑pciNov 19 21:42:37 attic4‑sl42 kernel: usb 1‑1.1: reset high‑speed USB device number 12 using ehci‑pciNov 19 21:42:37 attic4‑sl42 kernel: usb 1‑1.1: reset high‑speed USB device number 12 using ehci‑pciNov 19 21:42:37 attic4‑sl42 kernel: usb 1‑1.1: reset high‑speed USB device number 12 using ehci‑pciNov 19 21:42:38 attic4‑sl42 kernel: usb 1‑1.1: USB disconnect, device number 12Nov 19 21:42:38 attic4‑sl42 kernel: <27> udevd: inotify_add_watch(6, /dev/sdd, 10) failed: No such file or directoryNov 19 21:56:48 attic4‑sl42 ‑‑ MARK ‑‑
        Mostrar más

        2 xmlns=»http://www.w3.org/1999/xhtmlEl demonio de registro del kernel – klogd

        En el Listado 3 viste algunas formas de configurar el registro de mensajes del kernel. Pero, ¿cómo se registran los mensajes del kernel durante el arranque antes de que se monte un sistema de archivos? El kernel almacena los mensajes en un buffer de anillo en la memoria. El demonio klogd procesa estos mensajes directamente a una consola, o a un archivo como /var/log/dmesg, o a través de la instalación syslog.

        Note que el ejemplo del Listado 2 registra todos los mensajes de nivel de advertencia o superior en /var/log/syslog. En particular, esto incluye los mensajes del kernel.

        Al igual que el comando syslogd, el comando klogd tiene una serie de opciones. Consulte las páginas man o info para más detalles. No hay un archivo de configuración para klogd.

        También puede mostrar los mensajes del búfer de anillo del núcleo utilizando el comando dmesg. El comando también tiene opciones para interactuar con el buffer de anillo, por ejemplo para leer y borrar mensajes.

        Rotando y archivando ficheros de registro

        Con la cantidad de registros que es posible, necesitas poder controlar el tamaño de los ficheros de registro. Esto se hace mediante el comando logrotate, que suele ejecutarse como una tarea cron. (Consulte nuestro tutorial, Automatizar las tareas de administración del sistema mediante la programación de trabajos, para obtener más información sobre los trabajos cron).

        La idea general detrás del comando logrotate es que los archivos de registro se respaldan periódicamente y se inicia un nuevo registro. Se mantienen varias generaciones de registros, y cuando un registro llega a la última generación, puede ser archivado. Por ejemplo, puede ser enviado por correo a un usuario de archivo.

        Utilice el archivo de configuración /etc/logrotate.conf para especificar cómo debe producirse la rotación y el archivo de los registros. Puede especificar diferentes frecuencias, como la diaria, la semanal o la mensual, para diferentes archivos de registro, y puede controlar el número de generaciones a mantener y cuándo enviar o no copias por correo a un usuario de archivo. El listado 5 muestra un ejemplo de archivo /etc/logrotate.conf.

        Listado 5. Ejemplo de /etc/logrotate.conf
        #/etc/logrotate.conf ##logrotate is designed to ease administration of systems that generate large #numbers of log files. It allows automatic rotation, compression, removal, and #mailing of log files. Each log file may be handled daily, weekly, monthly, or #when it grows too large. ##logrotate is normally run daily from root's crontab. ##For more details, see "man logrotate". #rotate log files weekly: weekly #keep 4 weeks worth of backlogs: rotate 4 #create new (empty) log files after rotating old ones: create #uncomment if you want to use the date as a suffix of the rotated file #dateext #uncomment this if you want your log files compressed: #compress #some packages install log rotation information in this directory: include /etc/logrotate.d #Rotate /var/log/wtmp: /var/log/wtmp { missingok monthly create 0664 root utmp minsize 1M rotate 1 } #Rotate /var/log/btmp: /var/log/btmp { missingok monthly create 0600 root root rotate 1 } #Note that /var/log/lastlog is not rotated. This is intentional, and it should #not be. The lastlog file is a database, and is also a sparse file that takes #up much less space on the drive than it appears. #system-specific logs may be also be configured below:
        Mostrar másMostrar más icono

        xmlns=»http://www.w3.org/1999/xhtmlEl archivo logrotate.conf tiene opciones globales al principio. Estas son las opciones por defecto si no se especifica nada más en otra parte. En este ejemplo, los archivos de registro se rotan semanalmente y se guardan copias de seguridad de cuatro semanas. Una vez que se rota un archivo de registro, se crea automáticamente uno nuevo en lugar del antiguo. Tenga en cuenta que el archivo logrotate.conf puede incluir especificaciones de otros archivos. Aquí se incluyen todos los archivos de /etc/logrotate.d.

        Este ejemplo también incluye reglas específicas para /var/log/wtmp y /var/log/btmp, que se rotan mensualmente. No se emite ningún mensaje de error si faltan los archivos. Se crea un nuevo archivo y sólo se mantiene una copia de seguridad. El acceso a estos archivos también está restringido mediante la configuración de permisos.

        Nota: Los archivos /var/log/wtmp y /var/log/btmp registran los intentos de inicio de sesión exitosos y no exitosos, respectivamente. A diferencia de la mayoría de los archivos de registro, estos no son archivos de texto claro. Puede examinarlos utilizando los comandos last o lastb. Consulte las páginas de manual de estos comandos para obtener más detalles.

        En este ejemplo, cuando una copia de seguridad alcanza la última generación, se elimina porque no se especifica qué más hacer con ella.

        Puede realizar una copia de seguridad de los archivos de registro cuando alcancen un tamaño específico. También puede guionizar comandos para que se ejecuten antes o después de la operación de copia de seguridad. El listado 6 muestra un ejemplo más complejo.

        Listado 6. Otro ejemplo de configuración de logrotate
        /var/log/messages { rotate 5 mail logsave@log-server size 100k postrotate /usr/bin/killall -HUP syslogd endscript }
        Mostrar másMostrar más icono
        xmlns=»http://www.w3.org/1999/xhtml

        En el Listado 6, /var/log/messages se rota después de alcanzar 100 KB de tamaño. Se mantienen cinco archivos de copia de seguridad, y cuando la copia de seguridad más antigua envejece, se envía por correo a logsave@log-server. El postrotate introduce un script que reinicia el demonio syslogd una vez completada la rotación, enviándole la señal HUP. La sentencia endscript es necesaria para terminar el script y también es necesaria si un script prerotate está presente. Consulte la página man de logrotate para obtener información más completa.

        Como ocurre con muchos archivos de configuración de este tipo, algunos programas proporcionan una configuración adicional, normalmente en el directorio etc/logrotate.d. El listado 7 muestra los archivos en mi sistema Slackware.

        Listado 7. Archivos de configuración para logrotate
        root@attic4‑sl42:~#ls /etc/logrot/etc/logrotate.conf/etc/logrotate.d:consolekit mcelog mysql.orig ulogd wpa_supplicanthttpd mysql syslog vsftpdroot@attic4‑sl42:~#cat /etc/logrotate.d/httpd/var/log/httpd/_log { rotate 10 notifempty missingok size=5M compress delaycompress sharedscripts postrotate /etc/rc.d/rc.httpd restart endscript}
        Mostrar másMostrar más icono
        2 xmlns=»http://www.w3.org/1999/xhtmlEscanea los archivos de registro en busca de actividad notable

        Las entradas de los archivos de registro suelen tener una marca de tiempo y contienen el nombre del host del proceso que informa, junto con el nombre del proceso. El listado 8 muestra algunas líneas de /var/log/messages, que contienen entradas de varios programas.

        Listado 8. Ejemplos de entradas del archivo de registro
        Nov 19 15:48:31 attic4-sl42 kernel: EXT4-fs (sda6): re-mounted. Opts: (null) Nov 19 15:48:32 attic4-sl42 mtp-probe: checking bus 3, device 3: "/sys/devices/pci0000:00/0000:00:12.0/usb3/3-2/3-2.1" Nov 19 15:48:32 attic4-sl42 mtp-probe: bus: 3, device: 3 was not an MTP device Nov 19 15:48:32 attic4-sl42 mtp-probe: checking bus 3, device 4: "/sys/devices/pci0000:00/0000:00:12.0/usb3/3-2/3-2.4" Nov 19 15:48:32 attic4-sl42 mtp-probe: bus: 3, device: 4 was not an MTP device Nov 19 15:48:32 attic4-sl42 mtp-probe: checking bus 1, device 4: "/sys/devices/pci0000:00/0000:00:12.2/usb1/1-1/1-1.1" Nov 19 15:48:32 attic4-sl42 mtp-probe: bus: 1, device: 4 was not an MTP device Nov 19 15:48:36 attic4-sl42 root: /etc/rc.d/rc.inet1: /sbin/ifconfig lo 127.0.0.1 Nov 19 15:48:36 attic4-sl42 root: /etc/rc.d/rc.inet1: /sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo Nov 19 15:48:36 attic4-sl42 root: /etc/rc.d/rc.inet1: /sbin/dhcpcd -t 10 eth0 Nov 19 15:48:36 attic4-sl42 dhcpcd: eth0: adding address fe80::4c2a:3f48:e0f7:cc90 Nov 19 15:48:41 attic4-sl42 sshd: Server listening on 0.0.0.0 port 22. Nov 19 15:48:41 attic4-sl42 sshd: Server listening on :: port 22. Nov 19 15:48:41 attic4-sl42 ntpd: ntpd [email protected] Fri Jun 3 23:08: 22 UTC 2016 (1): Starting Nov 19 15:48:41 attic4-sl42 ntpd: Command line: /usr/sbin/ntpd -g -p /var /run/ntpd.pid Nov 19 15:48:41 attic4-sl42 ntpd: proto: precision = 0.230 usec (-22) Nov 19 15:48:41 attic4-sl42 ntpd: Listen and drop on 0 v6wildcard :12 3 Nov 19 15:48:41 attic4-sl42 ntpd: Listen and drop on 1 v4wildcard 0.0.0.0:123 Nov 19 15:48:41 attic4-sl42 ntpd: Listen normally on 2 lo 127.0.0.1:123 Nov 19 15:48:41 attic4-sl42 ntpd: Listen normally on 3 eth0 192.168.1.24:123 Nov 19 15:48:41 attic4-sl42 ntpd: Listen normally on 4 lo :123 Nov 19 15:48:41 attic4-sl42 ntpd: failed to init interface for address fe80::8616:f9ff:fe04:7a2a%2 Nov 19 15:48:41 attic4-sl42 ntpd: Listening on routing socket on fd #21 for interface updates Nov 19 15:48:41 attic4-sl42 acpid: starting up with netlink and the input layer Nov 19 15:48:41 attic4-sl42 acpid: 1 rule loaded Nov 19 15:48:41 attic4-sl42 acpid: waiting for events: event logging is off Nov 19 15:48:42 attic4-sl42 dbus: Activating service name='org.freedesktop.PolicyKit1' (using servicehelper) Nov 19 15:48:42 attic4-sl42 ntpd: failed to init interface for address fe80::8616:f9ff:fe04:7a2a%2
        Mostrar másMostrar más icono
        xmlns=»http://www.w3.org/1999/xhtmlLa última línea del listado 8 muestra un fallo del demonio Network Time Protocol (ntpd). En este caso, falló al inicializar una interfaz IP V6 porque este sistema sólo utiliza conexiones IP V4.

        Puede escanear los archivos de registro utilizando un localizador, como less, o buscar entradas específicas (como los mensajes de ntpd del host attic4-sl42) utilizando grep como se muestra en el Listado 9.

        Listado 9. Escanear archivos de registro

        root@attic4-sl42:~#grep "attic4-sl42 ntpd" /var/log/messages | tail -9 Nov 19 21:17:12 attic4-sl42 ntpd: Command line: /usr/sbin/ntpd -g -p /var/run/ntpd.pid Nov 19 21:17:12 attic4-sl42 ntpd: proto: precision = 0.220 usec (-22) Nov 19 21:17:13 attic4-sl42 ntpd: Listen and drop on 0 v6wildcard :123 Nov 19 21:17:13 attic4-sl42 ntpd: Listen and drop on 1 v4wildcard 0.0.0.0:123 Nov 19 21:17:13 attic4-sl42 ntpd: Listen normally on 2 lo 127.0.0.1:123 Nov 19 21:17:13 attic4-sl42 ntpd: Listen normally on 3 eth0 192.168.1.24:123 Nov 19 21:17:13 attic4-sl42 ntpd: Listen normally on 4 lo :123 Nov 19 21:17:13 attic4-sl42 ntpd: Listen normally on 5 eth0 :123 Nov 19 21:17:13 attic4-sl42 ntpd: Listening on routing socket on fd #22 for interface updates
        Mostrar másMostrar más icono

        2 xmlns=»http://www.w3.org/1999/xhtmlMonitorear archivos de registro

        Ocasionalmente puede necesitar monitorear los archivos de registro en busca de eventos. Por ejemplo, podrías estar tratando de capturar un evento que ocurre con poca frecuencia en el momento en que ocurre. En tal caso, puede utilizar el comando tail con la opción -f para seguir el archivo de registro. El listado 10 muestra un ejemplo.

        Listado 10. Seguir las actualizaciones del archivo de registro
        root@attic4-sl42:~#tail -n 1 -f /var/log/messages Nov 20 09:24:58 attic4-sl42 kernel: sd 15:0:0:0: Attached SCSI removable disk Nov 20 09:26:23 attic4-sl42 kernel: usb 3-2.4: USB disconnect, device number 5 Nov 20 09:27:13 attic4-sl42 sshd: Accepted password for ian from 192.168.1.40 port 58184 ssh2 Nov 20 09:29:08 attic4-sl42 kernel: usb 3-2.4: new low-speed USB device number 6 using ohci-pci Nov 20 09:29:08 attic4-sl42 kernel: usb 3-2.4: New USB device found, idVendor=046d, idProduct=c50e Nov 20 09:29:08 attic4-sl42 kernel: usb 3-2.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0 Nov 20 09:29:08 attic4-sl42 kernel: usb 3-2.4: Product: USB Receiver Nov 20 09:29:08 attic4-sl42 kernel: usb 3-2.4: Manufacturer: Logitech Nov 20 09:29:08 attic4-sl42 kernel: input: Logitech USB Receiver as /devices/pci0000:00/0000:00:12.0/usb3/3-2/3-2.4/3-2.4:1.0/0003:046D:C50E.0004/input/input19 Nov 20 09:29:08 attic4-sl42 kernel: hid-generic 0003:046D:C50E.0004: input,hidraw1: USB HID v1.11 Mouse on usb-0000:00:12.0-2.4/input0 Nov 20 09:29:08 attic4-sl42 mtp-probe: checking bus 3, device 6: "/sys/devices/pci0000:00/0000:00:12.0/usb3/3-2/3-2.4" Nov 20 09:29:08 attic4-sl42 mtp-probe: bus: 3, device: 6 was not an MTP device
        Mostrar másMostrar más icono

        2 xmlns=»http://www.w3.org/1999/xhtmlSeguir los problemas reportados en los archivos de registro

        Cuando encuentre problemas en los archivos de registro, anote la hora, el nombre del host y el proceso que generó el problema. Si el mensaje identifica el problema lo suficientemente específico como para que pueda resolverlo, ya ha terminado. Si no es así, puede que tenga que actualizar syslog.conf para especificar que se registren más mensajes para la instalación correspondiente. Por ejemplo, es posible que necesite mostrar mensajes informativos en lugar de mensajes de advertencia o incluso mensajes de nivel de depuración. Su aplicación puede tener instalaciones adicionales que puede utilizar.

        Por último, si necesita poner marcas en el archivo de registro para ayudarle a saber qué mensajes se registraron en qué etapa de su actividad de depuración, puede utilizar el comando logger desde una ventana de terminal o un script de shell para enviar un mensaje de su elección al demonio syslogd para que se registre según las reglas de syslog.conf.

        Usando rsyslogd

        Rsyslog es el sistema autodenominado rocket-fast para el procesamiento de registros. Es compatible hacia arriba de syslog en el sentido de que puede procesar configuraciones compatibles con syslog y también manejar la llamada syslog a la información de registro. También proporciona varias mejoras que no son compatibles con versiones anteriores. En particular, soporta protocolos de registro adicionales, y puede registrar en bases de datos, como MySQL o PostgreSQL, así como en archivos. Se puede filtrar cualquier parte de un mensaje syslog y se puede configurar completamente el formato de salida.

        Las tradicionales páginas man e info proporcionan información básica sobre rsyslog. Sin embargo, hay bastante más documentación proporcionada en el formato HTML en el directorio doc de su sistema. Es posible que tenga que instalar el paquete rsyslog-doc si no estaba instalado en su sistema. La raíz del árbol HTML está en /usr/share/doc/rsyslog-8.24.0/html/index.html. La ubicación puede ser diferente en su sistema.

        El programa rsyslog se ejecuta como un demonio, similar a syslogd. El archivo de configuración por defecto es rsyslog.conf.

        Lista 11. Un fichero de configuración rsyslog.conf
        $ cat /etc/rsyslog.conf #rsyslog configuration file#For more information see /usr/share/doc/rsyslog‑*/rsyslog_conf.html#If you experience problems, see https://www.rsyslog.com/doc/v8-stable/troubleshooting/index.html####MODULES #####The imjournal module bellow is now used as a message source instead of imuxsock.$ModLoad imuxsock #provides support for local system logging (e.g. via logger command)$ModLoad imjournal #provides access to the systemd journal#$ModLoad imklog #reads kernel messages (the same are read from journald)#$ModLoad immark #provides ‑‑MARK‑‑ message capability#Provides UDP syslog reception#$ModLoad imudp#$UDPServerRun 514#Provides TCP syslog reception#$ModLoad imtcp#$InputTCPServerRun 514####GLOBAL DIRECTIVES #####Where to place auxiliary files$WorkDirectory /var/lib/rsyslog#Use default timestamp format$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat#File syncing capability is disabled by default. This feature is usually not required,#not useful and an extreme performance hit#$ActionFileEnableSync on#Include all config files in /etc/rsyslog.d/$IncludeConfig /etc/rsyslog.d/.conf#Turn off message reception via local log socket;#local messages are retrieved through imjournal now.$OmitLocalLogging on#File to store the position in the journal$IMJournalStateFile imjournal.state####RULES #####Log all kernel messages to the console.#Logging much else clutters up the screen.#kern./dev/console#Log anything (except mail) of level info or higher.#Don't log private authentication messages!.info;mail.none;authpriv.none;cron.none /var/log/messages#The authpriv file has restricted access.authpriv./var/log/secure#Log all the mail messages in one place.mail.‑/var/log/maillog#Log cron stuffcron./var/log/cron#Everybody gets emergency messages.emerg :omusrmsg:#Save news errors of level crit and higher in a special file.uucp,news.crit /var/log/spooler#Save boot messages also to boot.loglocal7./var/log/boot.log####begin forwarding rule ####The statement between the begin ... end define a SINGLE forwarding#rule. They belong together, do NOT split them. If you create multiple#forwarding rules, duplicate the whole block!#Remote Logging (we use TCP for reliable delivery)##An on‑disk queue is created for this action. If the remote host is#down, messages are spooled to disk and sent when it is up again.#$ActionQueueFileName fwdRule1 #unique name prefix for spool files#$ActionQueueMaxDiskSpace 1g #1gb space limit (use as much as possible)#$ActionQueueSaveOnShutdown on #save messages to disk on shutdown#$ActionQueueType LinkedList #run asynchronously#$ActionResumeRetryCount ‑1 #infinite retries if host is down#remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional#.*` remote‑host:514####end of the forwarding rule ###
        Mostrar más

        xmlns=»http://www.w3.org/1999/xhtmlReconocerás las familiares entradas de syslog.conf en medio del fichero, rodeadas de cosas adicionales que la instalación rsyslog entiende. Consulte las páginas man o info o la documentación HTML para obtener más detalles.

        Puede utilizar logrotate con archivos creados por rsyslogd, aunque las bases de datos SQL pueden requerir scripts u otras herramientas. Del mismo modo, el comando logger sigue funcionando para colocar su propia marca en el registro.

        Usando el servicio de diario systemd

        Los ejemplos del servicio de diario systemd en esta sección provienen de Fedora 26.

        El programa systemd-journald es un demonio de servicio del sistema que recoge y almacena datos de registro. Crea y mantiene diarios estructurados e indexados basados en la información de registro que se recibe de las fuentes habituales de syslog, así como de los mensajes de registro estructurados que utilizan una API de diario nativa.

        El socket habitual /dev/log es un enlace a /run/systemd/journal/dev-log, como se muestra en el Listado 12.

        Listado 12. Los sockets dev/log y /run/systemd/journal/dev-log
        #ls ‑l /dev/loglrwxrwxrwx. 1 root root 28 Nov 20 23:43 /dev/log ‑> /run/systemd/journal/dev‑log#ls ‑l /run/systemd/journal/dev‑logsrw‑rw‑rw‑. 1 root root 0 Nov 20 23:43 /run/systemd/journal/dev‑log

        Mostrar másMostrar más icono

        xmlns=»http://www.w3.org/1999/xhtmlEl systemd-journald daemon escucha en sockets y otras entidades del sistema de archivos, incluyendo /dev/kmsg, /dev/log, /run/systemd/journal/dev-log, /run/systemd/journal/socket, y /run/systemd/journal/stdout. También puede escuchar eventos de auditoría utilizando netlink, que transfiere información del kernel al espacio de usuario utilizando sockets.

        La mayoría de los datos de registro son textuales, pero se permiten datos binarios, teóricamente de hasta 2^64-1 bytes de tamaño. El diario almacena los datos de registro en /run/log/journal/ por defecto. El sistema de archivos /run/ es volátil, por lo que los datos de registro se pierden cuando el sistema se reinicia. Para que los datos sean persistentes, se crea /var/log/journal/ y systemd-journald almacenará entonces los datos allí.

        Al igual que con otros sistemas de registro, hay un archivo de configuración. Por defecto, es /etc/systemd/journald.conf. Muchas opciones están compiladas por defecto, por lo que la mayoría de las opciones del archivo de configuración están inicialmente comentadas como se muestra en el Listado 13. Descomente las que desee cambiar. Como es habitual, los archivos de configuración adicionales pueden ubicarse en el directorio journald.conf.d. Los paquetes deben instalar su información de configuración del diario en /usr/lib/systemd/*.conf.d/.

        Listado 13. Ejemplo inicial de /etc/systemd/journald.conf
        # This file is part of systemd.## systemd is free software; you can redistribute it and/or modify it# under the terms of the GNU Lesser General Public License as published by# the Free Software Foundation; either version 2.1 of the License, or# (at your option) any later version.##Entries in this file show the compile time defaults.#You can change settings by editing this file.#Defaults can be restored by simply deleting this file.##See journald.conf(5) for details.#Storage=auto#Compress=yes#Seal=yes#SplitMode=uid#SyncIntervalSec=5m#RateLimitIntervalSec=30s#RateLimitBurst=1000#SystemMaxUse=#SystemKeepFree=#SystemMaxFileSize=#SystemMaxFiles=100#RuntimeMaxUse=#RuntimeKeepFree=#RuntimeMaxFileSize=#RuntimeMaxFiles=100#MaxRetentionSec=#MaxFileSec=1month#ForwardToSyslog=no#ForwardToKMsg=no#ForwardToConsole=no#ForwardToWall=yes#TTYPath=/dev/console#MaxLevelStore=debug#MaxLevelSyslog=debug#MaxLevelKMsg=notice#MaxLevelConsole=info#MaxLevelWall=emerg
        Mostrar másMostrar más icono
        xmlns=»http://www.w3.org/1999/xhtml

        Use las páginas man o info de journald.conf para obtener más información sobre los ajustes de configuración admitidos.

        Utilice el comando journalctl para mostrar la información registrada. El listado 14 muestra cómo mostrar las últimas 10 líneas de datos registrados y, a continuación, utilizar la opción -f para seguir, o mostrar continuamente, las nuevas líneas a medida que se añaden. Utilice la opción --rotate para rotar los archivos del diario.

        Listado 14. Uso de journalctl para mostrar o seguir mensajes de registro
        #journalctl ‑n 10 ‑f‑‑ Logs begin at Mon 2007‑07‑09 22:14:00 EDT. ‑‑Nov 21 10:24:47 atticf26 dbus‑daemon: Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus‑org.freedesktop.nm‑dispatcher.service' requested by ':1.9' (uid=0 pid=650 comm="/usr/sbin/NetworkManager ‑‑no‑daemon " label="system_u:system_r:NetworkManager_t:s0")Nov 21 10:24:47 atticf26 systemd: Starting Network Manager Script Dispatcher Service...Nov 21 10:24:47 atticf26 audit: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=NetworkManager‑dispatcher comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'Nov 21 10:24:47 atticf26 dbus‑daemon: Successfully activated service 'org.freedesktop.nm_dispatcher'Nov 21 10:24:47 atticf26 systemd: Started Network Manager Script Dispatcher Service.Nov 21 10:24:47 atticf26 nm‑dispatcher: req:1 'connectivity‑change': new request (5 scripts)Nov 21 10:24:47 atticf26 nm‑dispatcher: req:1 'connectivity‑change': start running ordered scripts...Nov 21 10:24:48 atticf26 gnome‑software‑service.desktop: 15:24:48:0034 Gs failed to call gs_plugin_app_install on packagekit: do not know how to install app in state queuedNov 21 10:24:52 atticf26 dhclient: DHCPDISCOVER on enp4s0 to 255.255.255.255 port 67 interval 15 (xid=0x36565033)Nov 21 10:24:57 atticf26 audit: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=NetworkManager‑dispatcher comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'Nov 21 10:25:07 atticf26 dhclient: DHCPDISCOVER on enp4s0 to 255.255.255.255 port 67 interval 14 (xid=0x36565033)Nov 21 10:25:21 atticf26 dhclient: DHCPDISCOVER on enp4s0 to 255.255.255.255 port 67 interval 17 (xid=0x36565033)Nov 21 10:25:22 atticf26 NetworkManager: <warn> dhcp4 (enp4s0): request timed outNov 21 10:25:22 atticf26 NetworkManager: <info> dhcp4 (enp4s0): state changed unknown ‑> timeoutNov 21 10:25:22 atticf26 NetworkManager: <info> dhcp4 (enp4s0): canceled DHCP transaction, DHCP client pid 7110Nov 21 10:25:22 atticf26 NetworkManager: <info> dhcp4 (enp4s0): state changed timeout ‑> doneNov 21 10:25:22 atticf26 NetworkManager: <info> device (enp4s0): state change: ip‑config ‑> failed (reason 'ip‑config‑unavailable', internal state 'managed')Nov 21 10:25:22 atticf26 NetworkManager: <warn> device (enp4s0): Activation: failed for connection 'enp3s0'Nov 21 10:25:22 atticf26 NetworkManager: <info> device (enp4s0): state change: failed ‑> disconnected (reason 'none', internal state 'managed')...Nov 21 10:26:37 atticf26 NetworkManager: <info> device (enp4s0): state change: ip‑config ‑> deactivating (reason 'user‑requested', internal state 'managed')Nov 21 10:26:37 atticf26 NetworkManager: <info> audit: op="device‑disconnect" interface="enp4s0" ifindex=3 pid=7167 uid=1000 result="success"Nov 21 10:26:37 atticf26 NetworkManager: <info> device (enp4s0): state change: deactivating ‑> disconnected (reason 'user‑requested', internal state 'managed')Nov 21 10:26:37 atticf26 gnome‑software‑service.desktop: 15:26:37:0783 Gs failed to call gs_plugin_app_install on packagekit: do not know how to install app in state queuedNov 21 10:26:37 atticf26 avahi‑daemon: Withdrawing address record for fe80::3fd7:76aa:e99d:da5d on enp4s0.Nov 21 10:26:37 atticf26 avahi‑daemon: Leaving mDNS multicast group on interface enp4s0.IPv6 with address fe80::3fd7:76aa:e99d:da5d.Nov 21 10:26:37 atticf26 avahi‑daemon: Interface enp4s0.IPv6 no longer relevant for mDNS.Nov 21 10:26:37 atticf26 gnome‑software‑service.desktop: 15:26:37:0787 Gs failed to call gs_plugin_app_install on packagekit: do not know how to install app in state queuedNov 21 10:26:37 atticf26 NetworkManager: <info> dhcp4 (enp4s0): canceled DHCP transaction, DHCP client pid 7179Nov 21 10:26:37 atticf26 NetworkManager: <info> dhcp4 (enp4s0): state changed unknown ‑> doneNov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=filter family=2 entries=99Nov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=nat family=2 entries=59Nov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=mangle family=2 entries=42Nov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=raw family=2 entries=30Nov 21 10:26:37 atticf26 dbus‑daemon: Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus‑org.freedesktop.nm‑dispatcher.service' requested by ':1.9' (uid=0 pid=650 comm="/usr/sbin/NetworkManager ‑‑no‑daemon " label="system_u:system_r:NetworkManager_t:s0")Nov 21 10:26:37 atticf26 systemd: Starting Network Manager Script Dispatcher Service...Nov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=filter family=10 entries=90Nov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=nat family=10 entries=54Nov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=mangle family=10 entries=41Nov 21 10:26:37 atticf26 audit: NETFILTER_CFG table=raw family=10 entries=31Nov 21 10:26:37 atticf26 dbus‑daemon: Successfully activated service 'org.freedesktop.nm_dispatcher'Nov 21 10:26:37 atticf26 audit: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=NetworkManager‑dispatcher comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'Nov 21 10:26:37 atticf26 nm‑dispatcher: req:1 'down' : new request (5 scripts)Nov 21 10:26:37 atticf26 systemd: Started Network Manager Script Dispatcher Service.Nov 21 10:26:37 atticf26 nm‑dispatcher: req:1 'down' : start running ordered scripts...Nov 21 10:26:38 atticf26 gnome‑software‑service.desktop: 15:26:38:0787 Gs failed to call gs_plugin_app_install on packagekit: do not know how to install app in state queuedNov 21 10:26:48 atticf26 audit: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=NetworkManager‑dispatcher comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'Nov 21 10:28:35 atticf26 cupsd: REQUEST localhost ‑ ‑ "POST / HTTP/1.1" 200 182 Renew‑Subscription successful‑ok
        Mostrar másMostrar más icono
        .

        xmlns=»http://www.w3.org/1999/xhtmlUsa el comando systemctl para mostrar información sobre, interactuar con, o controlar el demonio y las unidades relacionadas. El listado 15 muestra un ejemplo.

        Listado 15. Uso del comando systemctl
        #systemctl list‑units "journal" ‑‑no‑pagerUNIT LOAD ACTIVE SUB DESCRIPTION abrt‑journal‑core.service loaded active running Creates ABRT problems frosystemd‑journal‑flush.service loaded active exited Flush Journal to Persistesystemd‑journald.service loaded active running Journal Service systemd‑journald‑audit.socket loaded active running Journal Audit Socket systemd‑journald‑dev‑log.socket loaded active running Journal Socket (/dev/log)systemd‑journald.socket loaded active running Journal Socket LOAD = Reflects whether the unit definition was properly loaded.ACTIVE = The high‑level unit activation state, i.e. generalization of SUB.SUB = The low‑level unit activation state, values depend on unit type.6 loaded units listed. Pass ‑‑all to see loaded but inactive units, too.To show all installed unit files use 'systemctl list‑unit‑files'.

        Mostrar másMostrar más icono

        2 xmlns=»http://www.w3.org/1999/xhtmlUsando syslog-ng

        Syslog-ng se describe a sí mismo como «un demonio de registro mejorado, que soporta una amplia gama de métodos de entrada y salida: syslog, texto no estructurado, colas, SQL & NoSQL.» Es compatible con los protocolos syslog heredados y mejorados y añade compatibilidad con los formatos de mensajes JavaScript Object Notation (JSON) y journald. Syslog-ng soporta amplias capacidades para filtrar la entrada y formatear la salida.

        Una vez instalado, hay información básica en las páginas man e info. Sin embargo, probablemente querrá utilizar «The syslog-ng Open Source Edition Administrator Guide», que está disponible en formato HTML y PDF. (Ver recursos a la derecha para más información).

        El archivo de configuración por defecto es /etc/syslog-ng/syslog-ng.conf. Un ejemplo se muestra en el Listado 16. Los archivos de configuración adicionales pueden ubicarse en el directorio /etc/syslog-ng/conf.d.

        Listado 16. Ejemplo de syslog-ng.conf
        @version:3.9@include "scl.conf"#syslog‑ng configuration file.##This should behave pretty much like the original syslog on RedHat. But#it could be configured a lot smarter.##See syslog‑ng(8) and syslog‑ng.conf(5) for more information.##Note: it also sources additional configuration files (*.conf)# located in /etc/syslog‑ng/conf.d/options { flush_lines (0); time_reopen (10); log_fifo_size (1000); chain_hostnames (off); use_dns (no); use_fqdn (no); create_dirs (no); keep_hostname (yes);};source s_sys { system(); internal(); #udp(ip(0.0.0.0) port(514));};destination d_cons { file("/dev/console"); };destination d_mesg { file("/var/log/messages"); };destination d_auth { file("/var/log/secure"); };destination d_mail { file("/var/log/maillog" flush_lines(10)); };destination d_spol { file("/var/log/spooler"); };destination d_boot { file("/var/log/boot.log"); };destination d_cron { file("/var/log/cron"); };destination d_kern { file("/var/log/kern"); };destination d_mlal { usertty(""); };filter f_kernel { facility(kern); };filter f_default { level(info..emerg) and not (facility(mail) or facility(authpriv) or facility(cron)); };filter f_auth { facility(authpriv); };filter f_mail { facility(mail); };filter f_emergency { level(emerg); };filter f_news { facility(uucp) or (facility(news) and level(crit..emerg)); };filter f_boot { facility(local7); };filter f_cron { facility(cron); };#log { source(s_sys); filter(f_kernel); destination(d_cons); };log { source(s_sys); filter(f_kernel); destination(d_kern); };log { source(s_sys); filter(f_default); destination(d_mesg); };log { source(s_sys); filter(f_auth); destination(d_auth); };log { source(s_sys); filter(f_mail); destination(d_mail); };log { source(s_sys); filter(f_emergency); destination(d_mlal); };log { source(s_sys); filter(f_news); destination(d_spol); };log { source(s_sys); filter(f_boot); destination(d_boot); };log { source(s_sys); filter(f_cron); destination(d_cron); };#Source additional configuration files (.conf extension only)@include "/etc/syslog‑ng/conf.d/.conf"#vim:ft=syslog‑ng:ai:si:ts=4:sw=4:et:
        Mostrar más

        xmlns=»http://www.w3.org/1999/xhtmlGeneralmente no es necesario ejecutar tanto el diario systemd como el diario syslog-ng. Si desea utilizar ambos, tendrá que hacer algunos cambios de configuración en ambos y luego reiniciar ambos. Busque en la web instrucciones actuales sobre cómo hacer esto.

        Esto concluye su introducción a las instalaciones de registro en Linux.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *