Gerenciar mensagens de log em Systemd usando o JournalCTL [Guia abrangente]
- 953
- 179
- Maurice Champlin
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.confArquivo 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.
$ journalctlExibir 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.
- Gerenciando o processo de inicialização e serviços de inicialização do sistema (Sysvinit, Systemd e Upstart)
- Petiti - Uma ferramenta de análise de log de código aberto para linux sysadmins
- Como configurar e gerenciar rotação de log usando Logrotate no Linux
- 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.
- « Como instalar o samba no Ubuntu para compartilhamento de arquivos no Windows
- Como estender/reduzir o LVM (gerenciamento de volume lógico) no Linux - Parte II »