objetivo
el objetivo de este tutorial es aprender sobre los diferentes niveles de registro del kernel de linux, cómo están organizados y cómo podemos configurar qué mensajes deben mostrarse en la consola dependiendo de su gravedad.
requisitos
- privilegios de Root para editar archivos de configuración
dificultad
fácil
Introducción
la gestión de los archivos de registro del kernel de Linux es un aspecto crucial de la administración de una máquina: los registros pueden simplemente informarnos sobre el estado de daemon, o mostrar mensajes críticos o advertencias., En este tutorial, veremos los distintos tipos de nivel de registro utilizados por el kernel de linux, cómo están organizados por gravedad y cómo podemos filtrar los mensajes que se muestran en la consola dependiendo de él.
los niveles de registro del kernel de Linux
Básicamente hay ocho niveles de registro que un mensaje enviado por el kernel de linux puede adoptar, comenzando desde level 0
y disminuyendo en severidad ‘hasta level 7
: el identificador de nivel de registro más bajo, el contexto más crítico.,
cuando se establece un nivel de registro como predeterminado para la consola, ya sea de forma persistente o temporal, actúa como un filtro, de modo que solo se muestran los mensajes con un nivel de registro inferior a él (por lo tanto, los mensajes con una gravedad mayor). Veamos, brevemente, cómo se organizan los niveles de registro: el primer nivel de registro es 0
, identificado por la cadena KERN_EMERG
. Este es el nivel más alto en orden de gravedad: es adoptado por mensajes sobre inestabilidad del sistema o bloqueos inminentes.,
Loglevel 1
o KERN_ALERT
es lo que viene inmediatamente después. Este nivel se utiliza en situaciones en las que se requiere la atención del usuario inmediatamente.
el siguiente nivel de registro en orden de gravedad es KERN_CRIT
, o loglevel 2
. Este nivel de gravedad se usa para informar sobre errores críticos, tanto relacionados con el hardware como con el software.
Loglevel 3
, también identificado por la etiqueta KERN_ERR
string, es el siguiente en la escala., Los mensajes que adoptan este nivel se utilizan a menudo para notificar al usuario sobre errores no críticos, como por ejemplo un reconocimiento de dispositivo fallido o problemático, o más generalmente problemas relacionados con el controlador.
Suscríbase a RSS y NEWSLETTER y reciba las últimas noticias de Linux, trabajos, consejos de carrera y tutoriales.,
KERN_WARNING
, o loglevel 4
es el nivel de registro normalmente se utiliza por defecto en la mayoría de distribuciones de linux. Este nivel se utiliza para mostrar advertencias o mensajes sobre errores no inminentes.
Loglevel 5
it’sKERN_NOTICE
. Los mensajes que utilizan este nivel de gravedad son sobre eventos que pueden ser dignos de mención.,
Loglevel 6
it’s KERN_INFO
: este es el nivel de registro utilizado para los mensajes informativos sobre la acción realizada por el núcleo.
por último, tenemos KERN_DEBUG
, o loglevel 7
, que se utiliza principalmente para la depuración.
cómo comprobar el nivel de registro predeterminado actual
comprobar el nivel de registro predeterminado utilizado en nuestro sistema es muy fácil. Todo lo que tenemos que hacer es examinar el contenido del archivo /proc/sys/kernel/printk
., Para aquellos de ustedes que no lo saben, /proc
es un virtual filesystem
: los archivos contenidos en él no están realmente en el disco, sino que son una representación visual del estado del sistema creado por el kernel y mantenido en memoria. En este caso, por ejemplo, podemos utilizar el archivo mentionedabove para consultar información sobre el nivel de registro de consola predeterminado establecido en nuestro sistema. Todo lo que tenemos que hacer es ejecutar:
$ cat /proc/sys/kernel/printk
esta es la salida típica del comando:
4 4 1 7
el primer valor en nuestra salida es el actual console_loglevel
., Esta es la información que estábamos buscando: el valor, 4
en este caso, representa el nivel de registro utilizado actualmente. Como se ha dicho antes, esto significa que solo se mostrarán en la consola los mensajes que adopten un nivel de gravedad superior.
el segundo valor en la salida representa el default_message_loglevel
. Este valor se usa automáticamente para mensajes sin un nivel de registro específico: si un mensaje no está asociado con un nivel de Registro, este se usará para él.
El tercer valor en la salida informa el estado minimum_console_loglevel
., Indica el nivel de registro mínimo que se puede utilizar para console_loglevel
. El nivel aquí utilizado es 1
, el más alto.
finalmente, el último valor representa el default_console_loglevel
, que es el nivel de registro predeterminado utilizado para console_loglevel
en el momento del arranque.,
En aras de la integridad, debemos decir que la misma información se puede recuperar también utilizando el comando sysctl
, ejecutando:
$ sysctl kernel.printk
cambiando el nivel de registro predeterminado de la consola
acabamos de ver cómo recuperar LogLevel en uso para la consola. En algunas situaciones es posible que queramos cambiar ese valor: veamos cómo podemos lograr esta tarea.
el método más sencillo que podemos usar, es escribir el nuevo valor en el archivo /proc/sys/kernel/printk
., Sin embargo, esta es una solución temporal, y la nueva configuración no persistirá en el reinicio de la máquina., Digamos que queremos cambiar el nivel de registro predeterminado de la consola a 3
, esto es lo que ejecutaríamos:
$ echo "3" | sudo tee /proc/sys/kernel/printk
o si usamos la cuenta root
directamente:
# echo "3" > /proc/sys/kernel/printk
mirando el contenido del archivo, podemos verificar que el LogLevel es ahora el que especificamos en nuestro comando:
$ cat /proc/sys/kernel/printk3 4 1 7
podemos obtener el mismo resultado usando el comando sysctl
:
sudo sysctl -w kernel.printk=3
permítanme repetirlo de nuevo: estas son soluciones temporales, no persistentes., Para cambiar el nivel de registro predeterminado de manera persistente, debemos modificar el archivo /etc/default/grub
, pasando el parámetro loglevel
a la línea de comandos del kernel en el arranque: arriba está el contenido del archivo /etc/default/grub, y resaltado es el parámetro que debe agregarse a GRUB_CMDLINE_LINUX
, que contiene instrucciones de la línea de comandos del kernel. En este caso usamos loglevel=3
, ya que queríamos usar ese nivel de registro específico para la consola., Después de modificar el archivo y guardar los cambios, debemos recargar grub para que la nueva configuración se aplique en el siguiente reinicio: el comando para realizar esta operación depende de la distribución que estemos ejecutando. Genéricamente El comando es:
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
en la distribución basada en Debian, se utiliza un script de envoltura para realizar básicamente la misma operación:
$ sudo update-grub
la configuración de grub se actualizará, y en el siguiente reinicio, el nivel de registro especificado se adoptará como predeterminado.,
conclusiones
en este tutorial hemos aprendido cómo se organizan los registros del kernel de linux dependiendo de su nivel de gravedad. También vimos cómo podemos alterar la configuración predeterminada para que solo ciertos mensajes enviados por el núcleo se muestren en la consola, utilizando los mismos criterios. Finalmente vimos cómo hacer que esos cambios fueran persistentes.