Gerenciar mensagens de log em Systemd usando o JournalCTL [Guia abrangente]

Gerenciar mensagens de log em Systemd usando o JournalCTL [Guia abrangente]

Systemd é um sistema de ponta e gerente de serviços para sistemas Linux: uma substituição de daemon init destinada a iniciar processos em paralelo na inicialização do sistema. Agora é suportado em uma série de distribuição convencional atual, incluindo Fedora, Debian, Ubuntu, OpenSuse, Arch, Rhel, Centos, etc.

Antes, explicamos a história por trás de 'Init' e 'Systemd'; Onde discutimos o que são os dois daemons, por que 'iniciar'Tecnicamente precisava ser substituído por'Systemd', bem como as principais características do Systemd.

Uma das principais vantagens do SystemD em relação a outros sistemas iniciais comuns é o suporte ao gerenciamento centralizado do registro de sistemas e processos usando um diário. Neste artigo, aprenderemos a gerenciar e visualizar mensagens de log em Systemd usando JournalCtl comando no linux.

Importante: Antes de avançar neste guia, você pode aprender a gerenciar serviços e unidades 'Systemd' usando o comando 'SystemCtl' e também criar e executar novas unidades de serviço no Systemd usando scripts de shell no Linux. No entanto, se você estiver bem com tudo o que é acima, continue lendo.

Configurando o Journald para coletar mensagens de log em Systemd

Journal é um daemon que reúne e escreve entradas de diário de todo o sistema; São essencialmente mensagens de inicialização, mensagens do kernel e do syslog ou vários aplicativos e armazenam todas as mensagens em um local central - arquivo de diário.

Você pode controlar o comportamento de Journal através do seu arquivo de configuração padrão: /etc/Systemd/Journald.conf que é gerado no momento da compilação. Este arquivo contém opções cujos valores você pode alterar para aproveitar seus requisitos de ambiente local.

Abaixo está uma amostra de como é o arquivo, visualizado usando o comando CAT.

$ cat/etc/Systemd/Journald.conf 
Arquivo de configuração do Journald
# Veja Journald.conf (5) para obter detalhes. [Journal] #Storage = Auto #compact = Sim #SEAL = Sim #splitMode = uid #syncintervalsec = 5m #ratelimitInterval = 30s #ratelimitburst = 1000 #SystemMaxuse = #SystemKeepFree = #SystemMaxFilesize = #SystemMaxFiles = 100 #RUNTIMAX = #RuNTime = # #RuNTime #Runtimemaxfilesize = #runtimemaxfiles = 100 #maxretentionsec = #maxfileSec = 1Morth #forwardToSySlog = sim #forwardTokmsg = não #forwardTocOnsole = no #forwardTowall = sim #ttypath =/dev/console #maxlevelStore = #dencugus MAXLevel = # MaxlevelConsole = info #maxlevelwall = emerg 

Observe que vários pacotes instalam e usam extratos de configuração em /usr/lib/systemd/*.conf.d/ e as configurações de tempo de execução podem ser encontradas em /Run/Systemd/Journald.conf.d/*.conf que você pode não necessariamente usar.

Ativar armazenamento de dados do diário no disco

Várias distribuições Linux, incluindo o Ubuntu e seus derivados como o Linux Mint, não permitem armazenamento persistente de mensagens de inicialização no disco por padrão.

É possível ativar isso definindo o “Armazenar"Opção para"persistente" como mostrado abaixo. Isso criará o /var/log/diário diretório e todos os arquivos do diário serão armazenados sob ele.

$ sudo vi/etc/systemd/Journald.conf ou $ sudo nano/etc/systemd/Journald.conf 
[Journal] Storage = persistente 

Para configurações adicionais, encontre o significado de todas as opções que devem ser configuradas sob o "[Diário]" Seção digitando.

$ Man Journald.conf 

Definir o tempo correto do sistema usando o comando timedatectl

Para um gerenciamento confiável de log no Systemd usando o serviço Journald, verifique se as configurações de tempo, incluindo o fuso horário, estão corretas no sistema.

Para visualizar as configurações de data e hora atuais em seu sistema, digite.

$ timedatectl ou $ timedatectl status Hora local: quinta-feira 2017-06-15 13:29:09 Eat Universal Horário: Qui 2017-06-15 10:29:09 UTC RTC Hora: quinta Fuso horário: África/Kampala (Eat, +0300) Horário de rede: Sim Sincronizado NTP: Sim RTC no TZ local: Não 

Para definir o fuso horário correto e possivelmente o tempo do sistema, use os comandos abaixo.

$ sudo timedatectl set-timezon africa/kampala $ sudo timedatectl time de ajuste “13:50:00” 

Visualizando mensagens de log usando o comando Journalctl

JournalCtl é um utilitário usado para visualizar o conteúdo do Systemd Journal (que é escrito pelo Serviço Journald).

Para mostrar todos os logs coletados sem filtragem, digite.

$ journalctl 
Exibir mensagens de log
-- Os registros começam na quarta-feira 2017-06-14 21:56:43 Eat, termine em quinta-feira, 2017-06-15 12:28:19 Eat 14 de junho 21:56:43 Tecmint Systemd-Journald [336]: Diário de Runtime (/Run /LOG/JORNO 14 JUN 21:56:43 Kernel Tecmint: Inicializando o CGROUP Subsys CPUSET 14 Jun 21:56:43 Kernel de Tecmint: Inicializando o CGROUP Subsys CPU 14 Jun 21:56:43 Kernel Tecmint: Inicializando o cgrup Subsys Cpuacct Jun 14 21: 56:43 Kernel Tecmint: Linux versão 4.4.0-21 Generic ([Email Protected]) 14 de junho 21:56:43 Kernel Tecmint: Linha de comando: boot_image =/boot/vmlluz-4.4.0-21- 14 de junho 21:56:43 Kernel de Tecmint: Kernel apoiou as CPUs: Jun 14 21:56:43 Kernel de Tecmint: Intel GenuineIntel 14 Jun 21:56:43 Tecmint Kernel: AMD Authenticamd 14 21:56:43 Tecmint Kernel: Centaur Centaurhauls, 14 de junho 21:56:43 Kernel de Tecmint: x86/fpu: xstate_offset [2]: 576, xstate_sizes [2] Jun 14 21:56:43 Kernel: x86/fpu: o recurso de apoio xsave 0x01: 'x87: x86/fpu: o recurso de apoio xsave 0x01:' x86: x86/fpu: o recurso de suporte xSave 0x01: 'x86/fpu: xsave de apoio 0x01:' x86/fpu: o recurso de suporte xSave 0x01: 'x86/fpu: xsave de apoio 0x01:' x86/fPU: FLO Jun 14 21:56:43 Kernel Tecmint: x86/FPU: Suporte a XSave Recurso 0x02: 'SSE Reg 14 Jun 21:56:43 Kernel Tecmint: X86/FPU: Suporte ao Recurso Xsave 0x04:' Avx 14 21:56 : 43 Tecmint Kernel: x86/fpu: o XState habilitado apresenta 0x7, contexto SI 14 de junho 21:56:43 Kernel Tecmint: x86/fpu: Usando interruptores de contexto de 'anseia' FPU. Jun 14 21:56:43 Kernel de Tecmint: E820: Mapas de RAM física fornecidas pelo BIOS: 14 de junho 21:56:43 Kernel Tecmint: BIOS-E820: [MEM 0x0000000000000000-0x00000000000 JUN 14 21:56:43 TECMINT KERNEL: BIOS-BIOS: E820: [MEM 0x0000000000090000-0X00000000000 Jun 14 21:56:43 Kernel Tecmint: BIOS-E820: [MEM 0x0000000000100000-0X00000000001FF 14 21:56:43 KERNEL : 43 Kernel Tecmint: BIOS-E820: [MEM 0X00000020200000-0X00000000400 

Ver mensagens de log com base em botas

Você pode exibir uma lista de números de inicialização (em relação à inicialização atual), seus IDs e os registros de data e hora da primeira e última mensagem correspondente à inicialização com o --botas de lista opção.

$ Journalctl-List-Boots -1 9FB590B48E1242F58C2579DEFDBBDDC9 TU 2017-06-15 16:43:36 EAT-THU 2017-06-15 1 0 464C6E264A4CA087999999999999999930 15 1 

Para ver as entradas do diário da bota atual (número 0), use o -b Mudar como este (o mesmo que a saída de amostra acima).

$ journalctl -b 

e para ver um diário da bota anterior, use o -1 ponteiro relativo com o -b opção como abaixo.

$ journalctl -b -1 

Como alternativa, use o ID da inicialização como este.

$ JournalCTL -B 9FB590B48E1242F58C2579DEFDBBDDC9 

Filtrando mensagens de log com base no tempo

Para usar o tempo no formato coordenado de tempo universal (UTC), adicione o --UTC opções da seguinte forma.

$ journalctl --utc 

Para ver todas as entradas desde uma data e hora específicas, e.g. 15 de junho de 2017 às 8:15, digite este comando.

$ journalctl-Desde 

Visualizando mensagens de log recentes

Para ver as recentes mensagens de log (10 por padrão), use o -n bandeira como mostrado abaixo.

$ journalctl -n $ journalctl -n 20 

Visualizando mensagens de log geradas pelo kernel

Para ver apenas mensagens do kernel, semelhante à saída do comando dmesg, você pode usar o -k bandeira.

$ journalctl -k $ journalctl -k -b $ journalctl -k -b 9fb590b48e1242f58c2579defdbbdc9 

Visualizando mensagens de log geradas por unidades

Pode ver todas as entradas do diário para uma determinada unidade, use o -você alternar a seguinte.

$ journalctl -u apache2.serviço 

Para zero até a inicialização atual, digite este comando.

$ journalctl -b -u apache2.serviço 

Para mostrar logs da inicialização anterior, use isso.

$ journalctl -b -1 -u apache2.serviço 

Abaixo estão alguns outros comandos úteis:

$ journalctl -u apache2.Serviço $ Journalctl -u Apache2.Serviço - -Desde hoje $ Journalctl -u Apache2.Serviço -u Nagios.Serviço - -desde ontem 

Visualizando mensagens de log geradas por processos

Para visualizar os logs gerados por um processo específico, especifique seu PID como este.

$ journalctl _pid = 19487 $ journalctl _pid = 19487 -desde hoje 

Visualizando mensagens de log geradas pelo ID do usuário ou grupo

Para visualizar os logs gerados por um usuário ou grupo específico, especifique seu usuário ou ID de grupo como este.

$ journalctl _uid = 1000 $ journalctl _uid = 1000 -desde hoje 

Visualizando logs gerados por um arquivo

Para mostrar todos os logs gerados por um arquivo (possivelmente um executável), como os executáveis ​​do D-BUS ou executáveis, basta digitar.

$ journalctl/usr/bin/dbus-daemon $ journalctl/usr/bin/bash 

Visualizando mensagens de log por prioridade

Você também pode filtrar a saída com base em prioridades de mensagem ou faixas prioritárias usando o -p bandeira. Os valores possíveis são: 0 - Emerg, 1 - Alert, 2 - Crit, 3 - Err, 4 - Aviso, 5 - Aviso, 6 - Informações, 7 - Debug):

$ journalctl -p err 

Para especificar um intervalo, use o formato abaixo (emerg para aviso).

$ journalctl -p 1… 4 ou $ journalctl -p emerg… aviso 

Veja mensagens de log em tempo real

Você pode praticamente assistir logs enquanto eles estão sendo escritos com o -f opção (semelhante a Tail -f funcionalidade).

$ journalctl -f 

Manuseando formatação de exibição de diário

Se você deseja controlar a formatação de saída das entradas do diário, adicione o -o Sinalize e use estas opções: gato, exportação, JSON, JSON-Pretty, JSON-SSE, curto, curto-iso, curto-monotônico, preconceito e verboso (verifique o significado das opções na página do homem:

O gato A opção mostra a mensagem real de cada entrada do diário sem metadados (registro de data e hora e assim por diante).

$ journalctl -b -u apache2.Serviço -O Cat 

Gerenciando periódicos em um sistema

Para verificar o arquivo do diário para obter consistência interna, use o --verificar opção. Se tudo estiver bem, a saída deve indicar um passe.

$ journalctl --verify pas:/run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/sistema.Jornal 491F68: Dados não utilizados (Entry_offset == 0) PASS:/RUN/LOG/Journal/2A5D5F96EF9147C0B35535562B32D0FF/[Email Protect] 9866C3D4D.Journal Pass:/Run/Log/Journal/2a5d5f96ef9147c0b35535562b32d0ff/[email protegido] 5d8945a9e.Journal Pass:/Run/Log/Journal/2A5D5F96EF9147C0B35535562B32D0FF/[Email Protected] 1Becab02f.Journal Pass:/Run/Log/Journal/2A5D5F96EF9147C0B35535562B32D0FF/[Email Protect].Diário 

Excluindo arquivos antigos do diário

Você também pode exibir o uso atual do disco de todos os arquivos de diário com o --Uso de disco opções. Ele mostra a soma do uso de disco de todos os arquivos de periódicos arquivados e ativos:

$ journalctl-disco-uso 

Para excluir os arquivos antigos do diário (arquivado), executam os comandos abaixo:

$ sudo journalctl --vacuum-size = 50m #delete arquivos até que o espaço do disco que eles usam caem abaixo do tamanho especificado $ sudo journalctl --vacuum-time = 1years #delete arquivos para que todos os arquivos do diário não contenham dados mais antigos que o timepan especificado $ sudo journalctl --vacuum-files = 4 #delete arquivos para que não mais do que o número especificado de arquivos de periódicos separados permanecem no local de armazenamento 

Arquivos de periódicos rotativos

Por último, mas não menos importante, você pode instruir o Journald a girar os arquivos do diário com o --girar opção. Observe que esta diretiva não retorna até que a operação de rotação seja concluída:

$ sudo jornalctl -rotate 

Para um guia e opções de uso detalhados, veja a página do JournalCTL Man, como segue.

$ MAN JournalCtl 

Confira alguns artigos úteis.

  1. Gerenciando o processo de inicialização e serviços de inicialização do sistema (Sysvinit, Systemd e Upstart)
  2. Petiti - Uma ferramenta de análise de log de código aberto para linux sysadmins
  3. Como configurar e gerenciar rotação de log usando Logrotate no Linux
  4. LNAV - Assista e analise os logs do Apache de um terminal Linux

É isso por agora. Use o feedback de baixo para fazer qualquer pergunta ou adicionar pensamentos sobre este tópico.