< Systemd (Português)

Systemd (Português)/Journal (Português)

Status de tradução: Esse artigo é uma tradução de systemd/Journal. Data da última tradução: 2019-10-13. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

systemd tem o seu próprio sistema de registro chamado de o journal e, portanto, a execução de uma daemon syslog não é mais necessário. Para ler o registro, utilize:

# journalctl

No Arch Linux, o diretório /var/log/journal/ faz parte do pacote systemd e o journal (quando Storage= está definido para auto em /etc/systemd/journald.conf) vai escrever para /var/log/journal/. Se você ou algum programa excluir esse diretório, systemd não vai recriá-lo automaticamente e, em vez disso,vai escrever seus logs em /run/systemd/journal em uma forma não persistente. Porém, a pasta será recriada quando você definir Storage=persistent e reiniciar systemd-journald.service (ou reinicializar o sistema).

O journal do systemd classifica mensagens por nível de prioridade e facilidade. A classificação de registro de logs corresponde ao clássico protocolo do Syslog (RFC 5424).

Nível de prioridade

Um código de severidade do syslog (em systemd chamado de prioridade) é usado para marcar a importância de uma mensagem RFC 5424 Seção 6.2.1.

ValorSeveridadePalavra-chaveDescriçãoExemplos
0EmergênciaemergSistema não está usávelBUG de kernel severo, núcleo do systemd despejado.
Esse nível não deve ser usado por aplicativos.
1AlertaalertDeve ser corrigido imediatamenteSubsistema vital parou de funcionar. Perda de dados.
kernel: BUG: unable to handle kernel paging request at ffffc90403238ffc.
2CríticocritCondições críticasTravamentos, despejos de núcleo. Como flash familiar:
systemd-coredump[25319]: Process 25310 (plugin-containe) of user 1000 dumped core
Falha no aplicativo de sistema principal, como o X11.
3ErroerrCondições de erroErro não severo relatado:
kernel: usb 1-3: 3:1: cannot get freq at ep 0x84,
systemd[1]: Failed unmounting /var.,
libvirtd[1720]: internal error: Failed to initialize a valid firewall backend.
4AvisowarningPode indicar que um erro vai ocorrer se uma ação não for tomada.Um sistema de arquivos não raiz tem apenas 1GB livre.
org.freedesktop. Notifications[1860]: (process:5999): Gtk-WARNING **: Locale not supported by C library. Using the fallback 'C' locale.
5NotanoticeEventos que são incomuns, mas não condições de erro.systemd[1]: var.mount: Directory /var to mount over is not empty, mounting anyway. gcr-prompter[4997]: Gtk: GtkDialog mapped without a transient parent. This is discouraged.
6InformacionalinfoMensagens de operação normais que exigem nenhuma ação.lvm[585]: 7 logical volume(s) in volume group "archvg" now active.
7DepuraçãodebugInformações úteis para desenvolvedores para depurar o aplicativo.kdeinit5[1900]: powerdevil: Scheduling inhibition from ":1.14" "firefox" with cookie 13 and reason "screen".

Se você não encontrar uma mensagem no nível de prioridade esperado, pesquise também alguns níveis acima e abaixo: essas regras são recomendações, e o desenvolvedor do aplicativo afetado pode ter uma percepção diferente da importância do problema.

Facilidade

Um código de facilidade syslog é usado para especificar o tipo de programa que está registrando a mensagem RFC 5424 Seção 6.2.1.

Código de facilidadePalavra-chaveDescriçãoInformação
0kernmensagens de kernel
1usermensagens de nível de usuário
2mailsistema de correioO POSIX arcaico ainda tem suporte e é por vezes usado (para mais mail(1))
3daemondaemons de sistemasTodos os daemons, incluindo systemd e seus subsistemas
4authmensagens de segurança/autorizaçãoTambém monitora a facilidade 10
5syslogmensagens geradas internamente pelo syslogdPadronizado para syslog, não sendo usado pelo systemd (veja facilidade 3)
6lprsubsistema de impressora de linha (subsistema arcaico)
7newssubsistema de notícias de rede (subsistema arcaico)
8uucpsubsistema UUCP (subsistema arcaico)
9daemon de relógiosystemd-timesyncd
10authprivmensagens de segurança/autorizaçãoTambém monitora a facilidade 4
11ftpdaemon FTP
12-subsistema NTP
13-auditoria de log
14-alerta de log
15crondaemon de agendamento
16local0uso local 0 (local0)
17local1uso local 1 (local1)
18local2uso local 2 (local2)
19local3uso local 3 (local3)
20local4uso local 4 (local4)
21local5uso local 5 (local5)
22local6uso local 6 (local6)
23local7uso local 7 (local7)

Então, facilidades que é útil monitorar: 0,1,3,4,9,10,15.

Filtrando saída

journalctl permite filtrar a saída por campos específicos. Esteja ciente de que, se houver muitas mensagens para exibir ou filtrar um grande intervalo de tempo, a saída desse comando poderá ser atrasada por algum tempo.

Dica: Sendo o journal armazenado em um formato binário, o conteúdo das mensagens armazenadas não é modificado. Isso significa que ele é visível com strings, por exemplo, para recuperação em um ambiente que não tenha systemd instalado. Exemplo de comando:
$ strings /mnt/arch/var/log/journal/af4967d77fba44c6b093d0e9862f6ddd/system.journal | grep -i ''mensagem''

Exemplos:

  • Mostrar todas mensagens desta inicialização:
    # journalctl -b
    No entanto, muitas vezes, alguém está interessado em mensagens que não são da atual, mas da inicialização anterior (por exemplo, se uma falha irrecuperável de sistema ocorrer). Isso é possível através do parâmetro de deslocamento opcional da opção -b: journalctl -b -0 mostra mensagens da inicialização atual, journalctl -b -1 da inicialização anterior, journalctl -b -2 da segunda anterior e por aí vai – você pode ver a lista de inicializações com seus números usando journalctl --list-boots. Veja journalctl(1) para descrição completa, a semântica é muito mais poderosa.
  • Mostrar todas as mensagens da data (e hora opcional):
    # journalctl --since="2012-10-30 18:17:16"
  • Mostrar todas as mensagens desde 20 minutos atrás:
    # journalctl --since "20 min ago"
  • Seguir novas mensagens:
    # journalctl -f
  • Mostrar novas mensagens por um executável específico:
    # journalctl /usr/lib/systemd/systemd
  • Mostrar todas as mensagens por um processo específico:
    # journalctl _PID=1
  • Mostrar todas as mensagens por uma unit específica:
    # journalctl -u man-db.service
  • Mostrar o ring buffer do kernel:
    # journalctl -k
  • Mostrar apenas mensagens de prioridade de erro, crítico e alerta
    # journalctl -p err..alert
    Números também podem ser usados, journalctl -p 3..1. Se somente um número/uma palavra-chave usado(a), journalctl -p 3 - todos os níveis de prioridade maiores também são incluídos.
  • Mostrar equivalente a auth.log filtrando na facilidade do syslog:
    # journalctl SYSLOG_FACILITY=10
  • Se o diretório do journal (por padrão, localizado sob /var/log/journal) contém quantidade imensa de dados de log, então journalctl pode levar vários minutos filtrando a saída. Você pode acelerar significativamente usando a opção --file para forçar o journalctl a procurar apenas no journal mais recente:
    # journalctl --file /var/log/journal/*/system.journal -f

Veja journalctl(1), systemd.journal-fields(7) ou a publicação de blogue do Lennart para detalhes.

Dica: Por padrão, journalctl trunca linhas maiores que a largura da tela, mas em alguns casos pode ser melhor habilitar wrapping em vez de trucamento'. Isso pode ser controlado pela variável de ambiente SYSTEMD_LESS, que contém opções passadas ao less (o paginador padrão) e usa como padrão FRSXMK (veja less(1) e journalctl(1) para detalhes).

Ao omitir a opção S, a saída estará sob wrap em vez de truncamento. Por exemplo, inicie journalctl da seguinte forma:

$ SYSTEMD_LESS=FRXMK journalctl
Se você quiser definir esse comportamento como padrão, exporte a variável a partir de ~/.bashrc ou ~/.zshrc.

Limite no tamanho do journal

Se o journal é persistente (não volátil), seu tamanho limite é definido para um valor padrão de 10% do tamanho do respectivo sistema de arquivos, mas limitado a 4 GB. Por exemplo, com o /var/log/journal localizado em uma partição de 20 GB, o journal pode usar até 2 GB. Em uma partição de 50 GB, ela usaria no máximo até 4 GB.

O tamanho máximo do journal persistente pode ser controlado removendo o comentário e alterando o seguinte:

/etc/systemd/journald.conf
SystemMaxUse=50M

Também é possível usar o mecanismo de substituição de configuração de snippets de drop-in, em vez de editar o arquivo de configuração global. Neste caso, não esqueça de colocar as sobrescrições no cabeçalho [Journal]:

/etc/systemd/journald.conf.d/00-journal-size.conf
[Journal]
SystemMaxUse=50M

Reinicie o systemd-journald.service após alterar essa configuração para aplicar imediatamente o novo limite.

Veja journald.conf(5) para mais informações.

Limpar arquivos de journal manualmente

Os arquivos de journal podem ser removidos globalmente de /var/log/journal/ usando, por exemplo, rm ou podem ser aparados de acordo com vários critérios usando journalctl . Exemplos:

  • Remova arquivos de journal armazenados até que o espaço em disco que eles usam fique abaixo de 100 MB:
    # journalctl --vacuum-size=100M
  • Faça com que todos os arquivos de diário não contenham dados com mais de 2 semanas.
    # journalctl --vacuum-time=2weeks

Veja journalctl(1) para mais informações.

Journald em conjunto com o syslog

Compatibilidade com uma implementação clássica, sem journald, do syslog pode ser fornecida deixando o systemd encaminhar todas as mensagens pelo soquete /run/systemd/journal/syslog. Para fazer funcionar o daemon do syslog com o journal, ele tem que associar a este soquete em vez de /dev/log (anúncio oficial).

O journald.conf padrão para encaminhar para o soquete é ForwardToSyslog=no para evitar sobrecarga de sistema, porque rsyslog ou syslog-ng obtêm as mensagens do journal eles mesmo.

Veja Syslog-ng#Overview e Syslog-ng#syslog-ng and systemd journal e rsyslog, para detalhes sobre a configuração.

Encaminhar journald para /dev/tty12

Crie um diretório de drop-in /etc/systemd/journald.conf.d e crie um arquivo fw-tty12.conf nele:

/etc/systemd/journald.conf.d/fw-tty12.conf
[Journal]
ForwardToConsole=yes
TTYPath=/dev/tty12
MaxLevelConsole=info

Então, reinicie systemd-journald.service.

Especificar um journal diferente para ver

Pode ser necessário verificar os logs de outro sistema que esteja inativo na água, como a inicialização de um sistema ativo para recuperar um sistema de produção. Nesse caso, pode-se montar o disco em, p. ex., /mnt e especificar o caminho do journal via -D/--directory, assim:

$ journalctl -D /mnt/var/log/journal -xe
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.