Ir para o conteúdoIr para navegação de página: página anterior [tecla de acesso p]/próxima página [tecla de acesso n]
documentation.suse.com / Gerenciando registros do sistema do SLE Micro

Gerenciando registros do sistema do SLE Micro

Data de Publicação: 29/09/2024
O QUE É?

A análise de arquivos de registro do sistema é uma das tarefas mais importantes ao analisar o sistema. Na verdade, examinar os arquivos de registro do sistema deve ser a primeira tarefa a ser feita durante a manutenção ou a solução de problemas de um sistema. O SLE Micro registra em detalhes automaticamente quase tudo o que acontece no sistema.

POR QUÊ?

Este artigo apresenta instruções sobre como ver os registros do sistema para examinar o que aconteceu nele.

DEDICAÇÃO

A leitura e a compreensão deste artigo levam cerca de 20 minutos.

META

Você terá uma visão geral de onde residem os arquivos de registro e como gerenciá-los.

REQUISITOS
  • Privilégios de root.

1 Onde encontrar os arquivos de registro do sistema?

O SLE Micro registra vários tipos de mensagens, por exemplo, do kernel, do SELinux ou de outros serviços.

As mensagens do kernel e dos serviços do sistema registradas com o systemd são gravadas no diário systemd (consulte a Seção 4, “O sistema de registro em diário do systemd: journal”). Outros arquivos de registro do sistema estão localizados no diretório /var/log. As mensagens do SELinux são registradas em /var/log/audit/audit.log. Para obter informações detalhadas, consulte SELinux troubleshooting.

A lista a seguir apresenta uma visão geral de todos os arquivos de registro do sistema encontrados no SLE Micro após uma instalação padrão. Dependendo do escopo da instalação, /var/log também contém arquivos de registro de outros serviços e aplicativos não listados aqui. Alguns arquivos e diretórios descritos a seguir são marcadores e são usados apenas quando o aplicativo correspondente está instalado. A maioria dos arquivos de registro fica visível apenas para o usuário root. Normalmente, você pode ver esses arquivos usando um editor, pois eles estão em texto simples.

Importante
Importante: Arquivos de registro não suportados

utmp, wtmp e lastlog foram removidos do SLE Micro e não são mais suportados. Se houver aplicativos que gravam nesses arquivos de registro, lembre-se de que os arquivos de registro estarão incompletos. wtmp foi substituído por wtmpdb, e lastlog por lastlog2.

audit/

Registros da estrutura de auditoria.

ConsoleKit/

Registros do daemon ConsoleKit (daemon para monitorar quais usuários efetuaram login e como eles interagem com o computador).

cups/

Registros de acesso e de erros do Common Unix Printing System (cups).

firewalld

Registros do firewall.

krb5/

Arquivos de registro do sistema de autenticação de rede Kerberos.

chrony/

Registros do daemon Network Time Protocol (chrony).

YaST2/

Todos os arquivos de registro do YaST.

zypp/

Arquivos de registro do libzypp. Consulte esses arquivos para obter o histórico de instalação do pacote.

zypper.log

Registros do instalador de linha de comando zypper.

2 Exibindo e analisando arquivos /var/log

Você pode ver e analisar registros de texto simples no /var/log usando comandos da CLI, conforme descrito a seguir.

Para ver os arquivos de registro, use os comandos less ou more. Use head e tail para ver o início ou o fim de um arquivo de registro. Para ver as entradas anexadas a um arquivo de registro em tempo real, use o comando tail -f. Para obter informações sobre como usar essas ferramentas, consulte as respectivas páginas de manual.

Para pesquisar strings ou expressões regulares em arquivos de registro, use grep. awk é útil para analisar e regravar arquivos de registro.

3 Gerenciando arquivos de registro com logrotate

Os arquivos de registro em /var/log crescem diariamente e ficam muito grandes em pouco tempo. logrotate é uma ferramenta que ajuda você a gerenciar arquivos de registro e seu crescimento. Essa ferramenta permite rotação, remoção, compactação e envio automáticos de arquivos de registro por e-mail. Os arquivos de registro podem ser administrados com frequência (diariamente, semanalmente ou mensalmente) ou quando excedem um tamanho específico.

Em geral, logrotate é executado diariamente pelo systemd e, portanto, costuma modificar os arquivos de registro apenas uma vez por dia. No entanto, há exceções quando um arquivo de registro é modificado devido ao seu tamanho, se logrotate é executado várias vezes por dia ou se --force está habilitado. Consulte o arquivo /var/lib/misc/logrotate.status para saber quando foi a última rotação de um arquivo específico.

Você pode configurar o logrotate de acordo com as suas necessidades. Para obter informações detalhadas, consulte a Seção 3.1, “Configurando logrotate.

3.1 Configurando logrotate

O arquivo de configuração principal logrotate.conf define, por exemplo, a frequência de rotação dos registros ou a ferramenta que é usada para compactações de dados. Cada serviço pode ter a própria configuração logrotate em /etc/logrotate.d/.

3.1.1 Ajustando o logrotate.conf

A versão padrão do logrotate.conf reside no diretório /usr/etc/. Se o padrão não atender às suas necessidades, copie o arquivo para /etc/logrotate.conf e mude os valores de configuração nele. Não modifique a versão /usr/etc/, pois ela pode ser sobregravada por uma atualização de sistema. Você pode substituir os seguintes valores:

weekly

A frequência de rotação do registro. Você pode usar qualquer um dos valores: hourly, daily, weekly, monthly ou yearly.

maxage

Você pode especificar por quantos dias os registros serão mantidos.

rotate 4

O número determina a quantidade de rotações durante as quais os registros rotacionados serão mantidos. Quando definido como rotate 0, os registros são apagados imediatamente. Quando definido como rotate -1, os registros não serão removidos até atingir o valor de maxage.

dateext

Se a opção estiver presente no arquivo de configuração, os nomes dos arquivos de registro rotacionados receberão a extensão com uma data no formato: logname.YYYYMMDD. Se ela não estiver presente, o esquema de nome de arquivo padrão será: logname.1 e logname.2.

compress

Se forem comentados, os registros não serão compactados.

compresscmd e uncompresscmd

Com eles, você pode mudar as ferramentas de compactação e descompactação padrão definindo caminhos absolutos correspondentes para as ferramentas.

include PATH

Você pode mudar o local padrão do arquivo com as informações de rotação de registro. O padrão é /var/lib/misc/logrotate.status.

3.1.2 Configuração de logrotate específica do serviço

Os serviços e aplicativos podem ter uma configuração de logrotate específica em /etc/logrotate.d. Além das opções mencionadas na Seção 3.1.1, “Ajustando o logrotate.conf, você pode usar as seguintes configurações:

missingok

A rotação de registro não relatará erros se qualquer um dos arquivos de registro especificados estiver ausente.

notifempty

Um arquivo de registro vazio não é rotacionado.

delaycompress

A compactação de registros rotacionados é adiada até a próxima rotação de registro.

sharedscripts

Indica uma seção com scripts que devem ser executados apenas uma vez, seja qual for o número de registros que estão sendo rotacionados. Se omitido, os scripts serão executados para cada arquivo de registro que estiver sendo rotacionado.

size

Define o tamanho que um arquivo de registro pode atingir antes de iniciar a rotação de registro. Essa opção pode ignorar a programação de horário. O valor pode ser em megabytes (M), kilobytes (K) ou bytes (B).

minsize

Os registros serão rotacionados de acordo com a programação de horário especificada se o tamanho exceder esse valor. O valor pode ser em megabytes (M), kilobytes (K) ou bytes (B).

maxsize

Especifica o tamanho máximo do arquivo de registro. Quando esse limite é alcançado, a rotação é acionada mesmo quando o intervalo de tempo não foi atingido. O valor pode ser em megabytes (M), kilobytes (K) ou bytes (B).

4 O sistema de registro em diário do systemd: journal

O systemd conta com um sistema de registro em diário próprio chamado journal. O próprio diário é um serviço do sistema gerenciado pelo systemd: systemd-journald.service.

O serviço coleta e armazena dados de registro mantendo diários indexados e estruturados com base nas informações de registro recebidas do kernel, de processos dos usuários, da entrada padrão e de erros de serviços do sistema. Por padrão, o serviço systemd-journald está habilitado e é iniciado.

O diário armazena os dados de registro em /var/log/journal/.

4.1 Uso do comando journalctl

Esta seção apresenta várias opções comuns úteis para melhorar o comportamento padrão do journalctl.

O comando journalctl tem a seguinte sintaxe:

        journalctl [options…] [matches…]
Dica
Dica: Mensagens relacionadas a um executável específico

Para mostrar todas as mensagens do diário relacionadas a determinado executável, especifique o caminho completo para o executável:

> sudo journalctl /usr/lib/systemd/systemd

O comando usa as seguintes opções:

-f

Mostra apenas as mensagens mais recentes do diário e imprime novas entradas de registro à medida que são adicionadas ao diário.

-e

Imprime as mensagens e pula para o fim do diário para que as entradas mais recentes fiquem visíveis no paginador.

-r

Imprime as mensagens do diário em ordem inversa para que as últimas entradas sejam listadas primeiro.

-k

Mostra apenas as mensagens do kernel. Equivale à correspondência de campo _TRANSPORT=kernel.

-u

Mostra apenas as mensagens da unidade systemd especificada. Equivale à correspondência de campo _SYSTEMD_UNIT=UNIT.

> sudo journalctl -u apache2
 [...]
 Jun 03 10:07:11 pinkiepie systemd[1]: Starting The Apache Webserver...
 Jun 03 10:07:12 pinkiepie systemd[1]: Started The Apache Webserver.

4.2 Filtrando registros em diário

Quando journalctl é chamado sem opções, o comando retorna o conteúdo completo do diário, com as entradas mais antigas listadas primeiro. É possível filtrar a saída por opções específicas ou campos de diário.

4.2.1 Filtrando com base no intervalo de tempo

É possível filtrar a saída do journalctl especificando a data de início e/ou de término. A especificação de data deve ser no formato 2014-06-30 9:17:16. Se a parte do horário for omitida, será considerada meia-noite. Se os segundos forem omitidos, :00será considerado. Se a parte da data for omitida, será considerado o dia atual. Em vez da expressão numérica, você pode especificar as palavras-chave ontem, hoje ou amanhã. Elas se referem à meia-noite do dia anterior ao dia atual, do dia atual ou do dia após o dia atual. Se você especificar agora, ele vai se referir ao horário atual. É possível também especificar horários relativos com os prefixos - ou +, que se referem aos horários antes ou depois do horário atual.

Mostrar apenas novas mensagens a partir de agora e atualizar a saída continuamente:

> sudo journalctl --since "now" -f

Exibir todas as mensagens a partir de meia-noite até 3:20.

> sudo journalctl --since "today" --until "3:20"

4.2.2 Filtrando com base em um número de boot

O journalctl pode filtrar as mensagens com base em um boot do sistema específico. Para listar todos os boots disponíveis, execute

> sudo journalctl --list-boots
 -1 097ed2cd99124a2391d2cffab1b566f0 Mon 2014-05-26 08:36:56 EDT—Fri 2014-05-30 05:33:44 EDT
  0 156019a44a774a0bb0148a92df4af81b Fri 2014-05-30 05:34:09 EDT—Fri 2014-05-30 06:15:01 EDT

A primeira coluna lista a diferença de boot: 0 para o boot atual, -1 para o boot anterior, -2 para o boot anterior a esse etc. A segunda coluna contém o ID do boot seguido das marcações de horário de limite do boot específico.

Mostrar todas as mensagens do boot atual:

> sudo journalctl -b

Se você precisa ver as mensagens de diário do boot anterior, adicione um parâmetro de diferença. O seguinte exemplo representa as mensagens do boot anterior:

> sudo journalctl -b -1

Uma outra maneira é listar as mensagens de boot com base no ID de boot. Para esta finalidade, use o campo _BOOT_ID:

> sudo journalctl _BOOT_ID=156019a44a774a0bb0148a92df4af81b

4.2.3 Filtrando com base nos campos

É possível filtrar a saída do diário por campos específicos. A sintaxe de um campo para correspondência é FIELD_NAME=MATCHED_VALUE, como _SYSTEMD_UNIT=httpd.service. É possível especificar várias correspondências em uma única consulta para filtrar ainda mais as mensagens de saída. Consulte man 7 systemd.journal-fields para ver a lista de campos padrão.

Mostrar mensagens produzidas por um ID de processo específico:

> sudo journalctl _PID=1039

Mostrar mensagens que pertencem a determinado ID de usuário:

# journalctl _UID=1000

Mostrar mensagens do buffer de anel do kernel (as mesmas que o dmesg produz):

> sudo journalctl _TRANSPORT=kernel

Mostrar mensagens da saída padrão ou de erros do serviço:

> sudo journalctl _TRANSPORT=stdout

Mostrar mensagens produzidas apenas por determinado serviço:

> sudo journalctl _SYSTEMD_UNIT=avahi-daemon.service

Se dois campos diferentes forem especificados, apenas as entradas que corresponderem às duas expressões ao mesmo tempo serão mostradas:

> sudo journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=1488

Se duas correspondências fizerem referência ao mesmo campo, todas as entradas correspondentes a uma das expressões serão mostradas:

> sudo journalctl _SYSTEMD_UNIT=avahi-daemon.service _SYSTEMD_UNIT=dbus.service

É possível usar o separador + para combinar duas expressões em um OR lógico. O seguinte exemplo mostra todas as mensagens do processo do serviço Avahi com ID de processo 1480 juntamente com todas as mensagens do serviço D-Bus:

> sudo journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=1480 + _SYSTEMD_UNIT=dbus.service

4.3 Configuração do journald

> sudo systemctl restart systemd-journald

4.3.1 Mudando o limite de tamanho do diário

Os dados de registro em diário usam até 10% do sistema de arquivos em que o /var/log/journal reside. Por exemplo, se /var/log/journal estiver em uma partição /var de 30 GB, o diário poderá usar até 3 GB de espaço em disco. Para mudar esse limite, altere (e remova o comentário) a opção SystemMaxUse:

SystemMaxUse=50M

4.3.2 Encaminhando o diário para /dev/ttyX

É possível encaminhar o diário para um dispositivo de terminal para você receber informações sobre mensagens do sistema na tela de terminal de sua preferência, por exemplo, /dev/tty12. Mude as seguintes opções de journald para:

ForwardToConsole=yes
TTYPath=/dev/tty12