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.