# systemd (Português)/Journal (Português)

From ArchWiki
< Systemd (Português)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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.

Valor | Severidade | Palavra-chave | Descrição | Exemplos
--- | --- | --- | --- | ---
0 | Emergência | emerg | Sistema não está usável | BUG de kernel severo, núcleo do systemd despejado. Esse nível não deve ser usado por aplicativos.
1 | Alerta | alert | Deve ser corrigido imediatamente | Subsistema vital parou de funcionar. Perda de dados. `kernel: BUG: unable to handle kernel paging request at ffffc90403238ffc`.
2 | Crítico | crit | Condições críticas | Travamentos, 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.
3 | Erro | err | Condições de erro | Erro 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`.
4 | Aviso | warning | Pode 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`.
5 | Nota | notice | Eventos 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`.
6 | Informacional | info | Mensagens de operação normais que exigem nenhuma ação. | `lvm[585]: 7 logical volume(s) in volume group "archvg" now active`.
7 | Depuração | debug | Informaçõ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 facilidade | Palavra-chave | Descrição | Informação
--- | --- | --- | ---
0 | kern | mensagens de kernel
1 | user | mensagens de nível de usuário
2 | mail | sistema de correio | O POSIX arcaico ainda tem suporte e é por vezes usado (para mais mail(1))
3 | daemon | daemons de sistemas | Todos os daemons, incluindo systemd e seus subsistemas
4 | auth | mensagens de segurança/autorização | Também monitora a facilidade 10
5 | syslog | mensagens geradas internamente pelo syslogd | Padronizado para syslog, não sendo usado pelo systemd (veja facilidade 3)
6 | lpr | subsistema de impressora de linha (subsistema arcaico)
7 | news | subsistema de notícias de rede (subsistema arcaico)
8 | uucp | subsistema UUCP (subsistema arcaico)
9 |  | daemon de relógio | systemd-timesyncd
10 | authpriv | mensagens de segurança/autorização | Também monitora a facilidade 4
11 | ftp | daemon FTP
12 | - | subsistema NTP
13 | - | auditoria de log
14 | - | alerta de log
15 | cron | daemon de agendamento
16 | local0 | uso local 0 (local0)
17 | local1 | uso local 1 (local1)
18 | local2 | uso local 2 (local2)
19 | local3 | uso local 3 (local3)
20 | local4 | uso local 4 (local4)
21 | local5 | uso local 5 (local5)
22 | local6 | uso local 6 (local6)
23 | local7 | uso 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

Category:

- Logging (Português)