Admin Linux - Gerenciamento de Log

systemd mudou a forma como o log do sistema é gerenciado para CentOS Linux. Em vez de cada daemon no sistema colocar logs em locais individuais, em vez de usar ferramentas como tail ou grep como a principal forma de classificar e filtrar as entradas de log,journald trouxe um único ponto de administração para analisar os logs do sistema.

Os principais componentes por trás do registro do systemd são: journal, jounralctl e journald.conf

O journald é o principal daemon de registro e é configurado editando o journald.conf, enquanto o journalctl é usado para analisar os eventos registrados pelo journald .

Os eventos registrados pelo journald incluem: eventos do kernel, processos do usuário e serviços daemon.

Defina o fuso horário correto do sistema

Antes de usar o journalctl , precisamos ter certeza de que a hora do nosso sistema está definida para a hora correta. Para fazer isso, queremos usar timedatectl .

Vamos verificar a hora atual do sistema.

[[email protected] rdc]# timedatectl status 
Local time: Mon 2017-03-20 00:14:49 MDT 
Universal time: Mon 2017-03-20 06:14:49 UTC 
RTC time: Mon 2017-03-20 06:14:49 
Time zone: America/Denver (MDT, -0600) 
NTP enabled: yes 
NTP synchronized: yes 
RTC in local TZ: no 
DST active: yes 
Last DST change: DST began at 
              Sun 2017-03-12 01:59:59 MST 
              Sun 2017-03-12 03:00:00 MDT 
Next DST change: DST ends (the clock jumps one hour backwards) at 
              Sun 2017-11-05 01:59:59 MDT 
              Sun 2017-11-05 01:00:00 MST
              
[[email protected] rdc]#

Atualmente, o sistema está correto para o fuso horário local. Se o seu sistema não estiver, vamos definir o fuso horário correto. Depois de alterar as configurações, o CentOS calculará automaticamente a diferença de fuso horário a partir do fuso horário atual, ajustando o relógio do sistema imediatamente.

Vamos listar todos os fusos horários com timedatectl -

[[email protected] rdc]# timedatectl list-timezones 
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau

Essa é a saída contida dos fusos horários da lista timedatectl . Para encontrar um fuso horário local específico, o comando grep pode ser usado -

[[email protected] rdc]# timedatectl list-timezones | grep -i "america/New_York" 
America/New_York
[[email protected] rdc]#

O rótulo usado pelo CentOS é geralmente País / Região com um sublinhado em vez de espaço (New_York versus "New York").

Agora vamos definir nosso fuso horário -

[[email protected] rdc]# timedatectl set-timezone "America/New_York"

[[email protected] rdc]# date 
Mon Mar 20 02:28:44 EDT 2017

[[email protected] rdc]#

O relógio do sistema deve ajustar a hora automaticamente.

Use journalctl para analisar registros

Opções de linha de comando comuns ao usar o journalctl -

Interruptor Açao
-k Lista apenas mensagens do kernel
-você Listas por unidade específica (httpd, sshd, etc ...)
-b Inicializa o deslocamento do rótulo
-o Registra o formato de saída
-p Filtros por tipo de registro (nome ou número)
-F Fieldname ou fieldnamevalue
--utc Tempo em compensação UTC
--Desde a Filtrar por período de tempo

Examine os registros de inicialização

Primeiro, examinaremos e configuraremos os logs de inicialização no CentOS Linux. A primeira coisa que você notará é que o CentOS, por padrão, não armazena o log de inicialização que é persistente nas reinicializações.

Para verificar os logs de inicialização por instância de reinicialização, podemos emitir o seguinte comando -

[[email protected] rdc]# journalctl --list-boots 
-4 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-3 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-2 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-1 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
 0 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:07:36 MDT

[[email protected] rdc]#

Depois de reiniciar o sistema, podemos ver outra entrada.

[[email protected] rdc]# journalctl --list-boots 
-5 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-4 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-3 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-2 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
-1 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:09:57 MDT
 0 aa6aaf0f0f0d4fcf924e17849593d972 Mon 2017-03-20 01:10:07 MDT—Mon 2017-03-20 01:12:44 MDT
 
[[email protected] rdc]#

Agora, vamos examinar a última instância de log de inicialização -

[email protected] rdc]# journalctl -b -5 
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Mon 2017-03-20 01:20:27 MDT. --
Mar 19 22:01:57 localhost.localdomain systemd-journal[97]: Runtime journal is using 8.0M 
(max allowed 108.4M
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuset
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpu
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuacct
Mar 19 22:01:57 localhost.localdomain kernel: Linux version 3.10.0514.6.2.el7.x86_64 
([email protected]
Mar 19 22:01:57 localhost.localdomain kernel: Command line: 
BOOT_IMAGE=/vmlinuz-3.10.0-514.6.2.el7.x86_64 ro
Mar 19 22:01:57 localhost.localdomain kernel: Disabled fast string operations
Mar 19 22:01:57 localhost.localdomain kernel: e820: BIOS-provided physical RAM map:

Acima está a saída condensada de nossa última inicialização. Também podemos consultar um log de inicialização de horas, dias, semanas, meses e até anos. No entanto, por padrão, o CentOS não armazena logs de inicialização persistentes. Para permitir o armazenamento persistente de logs de inicialização, precisamos fazer algumas alterações de configuração -

  • Faça pontos de armazenamento central para logs de inicialização
  • Dê as permissões adequadas para uma nova pasta de log
  • Configure o journald.conf para registro persistente

Configure o local de inicialização para registros de inicialização persistentes

O local inicial em que o journald desejará armazenar logs de inicialização persistentes é / var / log / journal . Como isso não existe por padrão, vamos criá-lo -

[[email protected] rdc]# mkdir /var/log/journal

Agora, vamos dar ao diretório as permissões adequadas de acesso ao daemon do journald -

systemd-tmpfiles --create --prefix /var/log/journal

Finalmente, vamos dizer ao journald que ele deve armazenar logs de inicialização persistentes. No vim ou no seu editor de texto favorito, abra /etc/systemd/jounrald.conf " .

# See journald.conf(5) for details.  
[Journal]=Storage=peristent

A linha com a qual estamos preocupados é Armazenamento = . Remova primeiro o comentário # e depois mude paraStorage = persistentconforme descrito acima. Salve e reinicie seu sistema CentOS e tome cuidado para que haja várias entradas ao executar o journalctl list-boots .

Note- Uma identificação de máquina em constante mudança como a de um provedor VPS pode fazer com que o journald falhe ao armazenar logs de inicialização persistentes. Existem muitas soluções alternativas para esse cenário. É melhor examinar as correções atuais postadas nos fóruns de administração do CentOS do que seguir os conselhos confiáveis ​​daqueles que encontraram soluções alternativas plausíveis de VPS.

Para examinar um log de inicialização específico, simplesmente precisamos obter cada deslocamento usando journald --list-inicializa o deslocamento com a opção -b . Portanto, para verificar o segundo log de inicialização que usaríamos -

journalctl -b -2

O padrão para -b sem deslocamento do log de inicialização especificado sempre será o log de inicialização atual após a última reinicialização.

Analisar registros por tipo de registro

Os eventos do journald são numerados e categorizados em 7 tipos separados -

0 - emerg   :: System is unusable 
1 - alert   :: Action must be taken immediatly    
2 - crit    :: Action is advised to be taken immediatly 
3 - err     :: Error effecting functionality of application 
4 - warning :: Usually means a common issue that can affect security or usilbity 
5 - info    :: logged informtation for common operations 
6 - debug   :: usually disabled by default to troubleshoot functionality

Portanto, se quisermos ver todos os avisos, o seguinte comando pode ser emitido via journalctl -

[[email protected] rdc]# journalctl -p 4
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Wed 2017-03-22 22:33:42 MDT. --
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: RSDP 00000000000f6a10 00024
(v02 PTLTD )
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: XSDT 0000000095eea65b 0005C
(v01 INTEL  440BX    06040000 VMW  01
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACP 0000000095efee73 000F4
(v04 INTEL  440BX    06040000 PTL  00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: DSDT 0000000095eec749 1272A
(v01 PTLTD  Custom   06040000 MSFT 03
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACS 0000000095efffc0 00040
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: BOOT 0000000095eec721 00028
(v01 PTLTD  $SBFTBL$ 06040000  LTP 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: APIC 0000000095eeb8bd 00742
(v01 PTLTD  ? APIC   06040000  LTP 00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: MCFG 0000000095eeb881 0003C
(v01 PTLTD  $PCITBL$ 06040000  LTP 00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: SRAT 0000000095eea757 008A8
(v02 VMWARE MEMPLUG  06040000 VMW  00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: HPET 0000000095eea71f 00038
(v01 VMWARE VMW HPET 06040000 VMW  00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: WAET 0000000095eea6f7 00028
(v01 VMWARE VMW WAET 06040000 VMW  00 
Mar 19 22:01:57 localhost.localdomain kernel: Zone ranges: 
Mar 19 22:01:57 localhost.localdomain kernel:   DMA      [mem 0x000010000x00ffffff] 
Mar 19 22:01:57 localhost.localdomain kernel:   DMA32    [mem 0x010000000xffffffff] 
Mar 19 22:01:57 localhost.localdomain kernel:   Normal   empty 
Mar 19 22:01:57 localhost.localdomain kernel: Movable zone start for each node 
Mar 19 22:01:57 localhost.localdomain kernel: Early memory node ranges 
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x000010000x0009dfff] 
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x001000000x95edffff] 
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x95f000000x95ffffff] 
Mar 19 22:01:57 localhost.localdomain kernel: Built 1 zonelists in Node order,
mobility grouping on.  Total pages: 60 
Mar 19 22:01:57 localhost.localdomain kernel: Policy zone: DMA32 
Mar 19 22:01:57 localhost.localdomain kernel: ENERGY_PERF_BIAS: Set to
'normal', was 'performance'

A descrição acima mostra todos os avisos dos últimos 4 dias no sistema.

A nova maneira de visualizar e examinar os registros com o systemd requer pouca prática e pesquisa para se familiarizar. No entanto, com diferentes formatos de saída e um aviso específico para tornar universais todos os logs de daemon empacotados, vale a pena abraçar. O journald oferece grande flexibilidade e eficiência em relação aos métodos tradicionais de análise de log.