Introdução aos níveis de log do kernel Linux

Introdução aos níveis de log do kernel Linux

Objetivo

O objetivo deste tutorial é aprender sobre os vários níveis de log do kernel Linux, como eles são organizados e como podemos configurar quais mensagens devem ser exibidas no console, dependendo de sua gravidade.

Requisitos

  • Privilégios de raiz para editar arquivos de configuração

Dificuldade

FÁCIL

Introdução

O gerenciamento de arquivos de log do linux kernel é um aspecto crucial de uma administração de máquinas: os logs podem simplesmente nos informar sobre o estado do daemon ou mostrar mensagens críticas ou avisos. Neste tutorial, veremos o tipo de nível de log usado pelo kernel Linux, como eles são organizados pela gravidade e como podemos filtrar as mensagens exibidas no console, dependendo dele.

Os níveis de log do kernel Linux

Existem basicamente oito níveis de log que uma mensagem enviada pelo kernel Linux pode adotar, começando por Nível 0 e diminuindo na gravidade 'Till Nível 7: o mais baixo identificador de nível de log, o contexto mais crítico.

Quando um nível de log é definido como o padrão para o console, persistente ou temporariamente, ele atua como um filtro, de modo que apenas mensagens com um nível de log menor que ele (portanto, mensagens com uma gravidade mais alta) são exibidas. Vamos ver, brevemente, como os níveis de log estão organizados:

O primeiro nível de log é 0, identificado pelo Kern_emerg corda. Este é o nível mais alto em ordem de gravidade: é adotado por mensagens sobre instabilidade do sistema ou falhas iminentes.

Loglevel 1, ou Kern_alert é o que vem imediatamente depois. Este nível é usado em situações em que a atenção do usuário é imediatamente necessária.

O próximo nível de log em ordem de gravidade é Kern_crit, ou nível de logle 2. Esse nível de gravidade é usado para informar sobre erros críticos, relacionados a hardware ou software.

Loglevel 3, também identificado pelo Kern_err string, é o próximo na escala. As mensagens que adotam esse nível são frequentemente usadas para notificar o usuário sobre erros não críticos, como por exemplo, um reconhecimento de dispositivo com falha ou problemático ou, mais geralmente, problemas relacionados ao motorista.



Kern_warning, ou nível de logle 4 É o nível de log geralmente usado como padrão na maioria das distribuições Linux. Este nível é usado para exibir avisos ou mensagens sobre erros não iminentes.

Loglevel 5 isso é Kern_Notice. Mensagens que usam esse nível de gravidade são sobre eventos que podem valer a pena notar.

Loglevel 6 isso é Kern_info: Este é o nível de log usado para mensagens informativas sobre a ação executada pelo kernel.

Finalmente, temos Kern_debug, ou nível de logle 7, que é usado principalmente para depuração.

Como verificar o nível de log padrão atual

Verificando o nível de log de padrão usado em nosso sistema é muito fácil. Tudo o que precisamos fazer é examinar o conteúdo do /proc/sys/kernel/printk arquivo. Para aqueles que não sabem, /Proc é um sistema de arquivos virtual: Os arquivos contidos nele não estão realmente no disco, mas são uma representação visual do estado do sistema criado pelo kernel e mantido na memória. Nesse caso, por exemplo, podemos usar o arquivo mencionado acima para consultar informações sobre o nível de log de console padrão definido em nosso sistema. Tudo o que precisamos fazer é executar:

$ cat/proc/sys/kernel/printk

Esta é a saída típica do comando:

4 4 1 7

O primeiro valor em nossa saída é a corrente Console_Loglevel. Esta é a informação que estávamos procurando: o valor, 4 Nesse caso, representa o nível de log atualmente usado. Como dito antes, significa que apenas mensagens adotando um nível de gravidade maior que ele será exibido no console.

O segundo valor na saída representa o Default_Message_Loglevel. Este valor é usado automaticamente para mensagens sem um nível de log específico: se uma mensagem não estiver associada a um nível de log, este será usado para isso.

O terceiro valor na saída relata o minimum_console_loglevel status. Indica o nível de log mínimo que pode ser usado para Console_Loglevel. O nível aqui usou 1, o mais alto.

Finalmente, o último valor representa o default_console_loglevel, qual é o nível de log do padrão usado para Console_Loglevel na hora da inicialização.

Por uma questão de completude, devemos dizer que as mesmas informações podem ser recuperadas também usando o sysctl comando, executando:

$ sysctl kernel.printk


Alterando o nível de log do console padrão

Acabamos de ver como recuperar informações sobre o nível atual de registro em uso para o console. Em algumas situações, podemos querer mudar esse valor: vamos ver como podemos realizar esta tarefa.

O método mais direto que podemos usar é escrever o novo valor para o /proc/sys/kernel/printk arquivo. No entanto, essa é uma solução temporária, e a nova configuração não persistirá uma reinicialização da máquina. Digamos que queremos alterar o nível de console padrão para 3, Aqui está o que teríamos executado:

$ echo "3" | sudo tee/proc/sys/kernel/printk

Ou se estiver usando o raiz Conta diretamente:

# echo "3">/proc/sys/kernel/printk

Observando o conteúdo do arquivo, podemos verificar se o nível de log agora é o que especificamos em nosso comando:

$ cat/proc/sys/kernel/printk 3 4 1 7 

Podemos obter o mesmo resultado usando o sysctl comando:

Sudo sysctl -w kernel.printk = 3

Deixe-me repetir novamente: essas são soluções temporárias e não persistentes. Para alterar o nível de log de padrão de uma maneira persistente, devemos modificar o /etc/default/grub arquivo, passando o Loglevel Parâmetro da linha de comando do kernel na inicialização:

GRUB_TIMEOUT = 5 GRUB_DISTIBUDOR = "$ (sed 's, liberação .*$ ,, g ' /etc /system-lan) "GRUB_DEFAULT = salvo grub_disable_submenu = true GRUB_TERMINAL_OUTPUT =" Console "GRUB_CMDLINE_LINUX ="Loglevel = 3 currículo = uuid = df5a0685-43f8-433a-8611-57335a10ca8d "grub_disable_recovery =" true " 

Acima está o conteúdo do arquivo/etc/padrão/grub e destacou o parâmetro que deve ser adicionado a GRUB_CMDLINE_LINUX, que contém as instruções da linha de comando do kernel. Nesse caso, usamos Loglevel = 3, Como queríamos usar esse nível de log específico para o console. Depois de modificar o arquivo e salvar as alterações, devemos recarregar o grub para que a nova configuração seja aplicada na próxima reinicialização: o comando para executar esta operação depende da distribuição que estamos executando. Genericamente, o comando é:

$ sudo grub2 -mkconfig -o/boot/grub2/grub.cfg

Na distribuição baseada no Debian, um script de wrapper é usado para executar basicamente a mesma operação:

$ sudo update-grub

A configuração do grub será atualizada e, na próxima reinicialização, o nível de log especificado será adotado como o padrão.

Conclusões

Neste tutorial, aprendemos como os registros do kernel Linux são organizados, dependendo do seu nível de gravidade. Também vimos como podemos alterar a configuração padrão para que apenas certas mensagens enviadas pelo kernel sejam exibidas no console, usando os mesmos critérios. Finalmente vimos como tornar essas mudanças persistentes.

Tutoriais do Linux relacionados:

  • Coisas para instalar no Ubuntu 20.04
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Loging e auditoria avançados no Linux
  • Como gerenciar e solucionar problemas de toras Kubernetes
  • Arquivos de configuração do Linux: os 30 primeiros mais importantes
  • Download do Linux
  • Coisas para fazer depois de instalar o Ubuntu 22.04 Jellyfish…
  • Instale Arch Linux na estação de trabalho VMware
  • Linux pode obter vírus? Explorando a vulnerabilidade do Linux…