Administrador de Linux: gestión de registros

systemd ha cambiado la forma en que se administra el registro del sistema para CentOS Linux. En lugar de que cada demonio del sistema coloque registros en ubicaciones individuales, en lugar de utilizar herramientas como tail o grep como forma principal de clasificar y filtrar las entradas del registro,journald ha aportado un único punto de administración para analizar los registros del sistema.

Los componentes principales detrás del registro de systemd son: journal, jounralctl y journald.conf

journald es el demonio de registro principal y se configura editando journald.conf, mientras que journalctl se usa para analizar los eventos registrados por journald .

Los eventos registrados por journald incluyen: eventos del kernel, procesos de usuario y servicios daemon.

Establecer la zona horaria correcta del sistema

Antes de usar journalctl , debemos asegurarnos de que la hora de nuestro sistema esté configurada en la hora correcta. Para hacer esto, queremos usar timedatectl .

Comprobemos la hora actual del 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]#

Actualmente, el sistema es correcto para la zona horaria local. Si su sistema no lo está, establezcamos la zona horaria correcta. Después de cambiar la configuración, CentOS calculará automáticamente el desplazamiento de la zona horaria de la zona horaria actual, ajustando el reloj del sistema de inmediato.

Hagamos una lista de todas las zonas horarias con 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

Esa es la salida contenida de timedatectl list-timezones . Para encontrar una zona horaria local específica, se puede utilizar el comando grep:

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

La etiqueta que utiliza CentOS suele ser País / Región con un guión bajo en lugar de un espacio (New_York versus "New York").

Ahora establezcamos nuestra zona horaria -

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

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

[[email protected] rdc]#

El reloj de su sistema debería ajustar automáticamente la hora.

Utilice journalctl para analizar registros

Cambios de línea de comando comunes cuando se usa journalctl -

Cambiar Acción
-k Muestra solo los mensajes del kernel
-u Listas por unidad específica (httpd, sshd, etc ...)
-segundo Inicia el desplazamiento de la etiqueta
-o Registra el formato de salida
-pags Filtra por tipo de registro (nombre o número)
-F Nombre de campo o valor de nombre de campo
--UTC Hora en compensación UTC
--ya que Filtrar por período de tiempo

Examinar los registros de arranque

Primero, examinaremos y configuraremos los registros de arranque en CentOS Linux. Lo primero que notará es que CentOS, por defecto, no almacena el registro de arranque que es persistente entre los reinicios.

Para verificar los registros de arranque por instancia de reinicio, podemos ejecutar el siguiente 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]#

Después de reiniciar el sistema, podemos ver otra 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]#

Ahora, examinemos la última instancia de registro de arranque:

[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:

Arriba está la salida condensada de nuestro último arranque. También podríamos consultar un registro de inicio de horas, días, semanas, meses e incluso años. Sin embargo, por defecto CentOS no almacena registros de arranque persistentes. Para habilitar el almacenamiento persistente de los registros de arranque, debemos realizar algunos cambios de configuración:

  • Crear puntos de almacenamiento central para los registros de arranque
  • Dar los permisos adecuados a una nueva carpeta de registro
  • Configurar journald.conf para registro persistente

Configurar la ubicación de inicio para registros de inicio persistentes

El lugar inicial donde journald querrá almacenar registros de arranque persistentes es / var / log / journal . Dado que esto no existe de forma predeterminada, creémoslo:

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

Ahora, démosle al directorio los permisos adecuados de acceso al demonio journald -

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

Finalmente, digamos a journald que debe almacenar registros de arranque persistentes. En vim o en su editor de texto favorito, abra /etc/systemd/jounrald.conf " .

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

La línea que nos interesa es Storage = . Primero elimine el comentario # , luego cambie aStorage = persistentcomo se muestra arriba. Guarde y reinicie su sistema CentOS y tenga cuidado de que haya varias entradas al ejecutar journalctl list-boots .

Note- Un ID de máquina en constante cambio como el de un proveedor de VPS puede hacer que journald no pueda almacenar registros de arranque persistentes. Hay muchas soluciones para tal escenario. Es mejor leer detenidamente las correcciones actuales publicadas en los foros de administración de CentOS, que seguir los consejos confiables de aquellos que han encontrado soluciones alternativas VPS plausibles.

Para examinar un registro de arranque específico, simplemente necesitamos obtener cada desplazamiento usando journald --list-boots el desplazamiento con la opción -b . Entonces, para verificar el segundo registro de arranque que usaríamos:

journalctl -b -2

El valor predeterminado para -b sin ningún desplazamiento de registro de arranque especificado siempre será el registro de arranque actual después del último reinicio.

Analizar registros por tipo de registro

Los eventos de journald están numerados y categorizados en 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

Por lo tanto, si queremos ver todas las advertencias, se puede emitir el siguiente comando a través de 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'

Lo anterior muestra todas las advertencias de los últimos 4 días en el sistema.

La nueva forma de ver y leer los registros con systemd requiere poca práctica e investigación para familiarizarse. Sin embargo, con diferentes formatos de salida y un aviso particular para hacer que todos los registros de demonios empaquetados sean universales, vale la pena adoptarlo. journald ofrece una gran flexibilidad y eficiencia sobre los métodos tradicionales de análisis de registros.