Gerenciando registros do sistema do SLE Micro
- 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.
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
ouyearly
.-
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 comorotate -1
, os registros não serão removidos até atingir o valor demaxage
.-
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
elogname.2
.-
compress
Se forem comentados, os registros não serão compactados.
compresscmd
euncompresscmd
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…]
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, :00
será 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
5 Informações legais #
Copyright © 2006-2024 SUSE LLC e colaboradores. Todos os direitos reservados.
Permissão concedida para copiar, distribuir e/ou modificar este documento sob os termos da Licença GNU de Documentação Livre, Versão 1.2 ou (por sua opção) versão 1.3; com a Seção Invariante sendo estas informações de copyright e a licença. Uma cópia da versão 1.2 da licença está incluída na seção intitulada “GNU Free Documentation License” (Licença GNU de Documentação Livre).
Para ver as marcas registradas da SUSE, visite https://www.suse.com/company/legal/. Todas as marcas comerciais de terceiros pertencem a seus respectivos proprietários. Os símbolos de marca registrada (®, ™ etc.) indicam marcas registradas da SUSE e de suas afiliadas. Os asteriscos (*) indicam marcas registradas de terceiros.
Todas as informações deste manual foram compiladas com a maior atenção possível aos detalhes. Entretanto, isso não garante uma precisão absoluta. A SUSE LLC, suas afiliadas, os autores ou tradutores não serão responsáveis por possíveis erros nem pelas consequências resultantes de tais erros.