Immaniġġja l-Messaġġi tal-Log Taħt Systemd billi tuża Journalctl [Gwida Komprensiva]


Systemd huwa sistema avvanzata u maniġer tas-servizz għal sistemi Linux: sostituzzjoni tad-daemon init maħsub biex jibda proċessi b'mod parallel fil-boot tas-sistema. Issa huwa appoġġjat f'numru ta 'distribuzzjoni mainstream attwali inklużi Fedora, Debian, Ubuntu, OpenSuSE, Arch, RHEL, CentOS, eċċ.

Aktar kmieni, spjegajna l-istorja wara ‘init’ u ‘systemd’; fejn iddiskutejna x’inhuma ż-żewġ daemons, għaliex ‘init’ teknikament kien jeħtieġ li jiġi sostitwit ma’ ‘systemd’ kif ukoll il-karatteristiċi ewlenin ta’ systemd.

Wieħed mill-vantaġġi ewlenin ta 'systemd fuq sistemi init komuni oħra huwa, appoġġ għall-ġestjoni ċentralizzata ta' sistema u proċessi illoggjar bl-użu ta 'ġurnal. F'dan l-artikolu, se nitgħallmu kif nimmaniġġjaw u naraw il-messaġġi tal-log taħt systemd bl-użu tal-kmand journalctl fil-Linux.

Importanti: Qabel ma timxi aktar f'din il-gwida, tista' tkun trid titgħallem kif timmaniġġja toħloq u tħaddem unitajiet ta' servizz ġodda f'systemd billi tuża skripts tal-qoxra fil-Linux. Madankollu, jekk inti tajjeb ma 'dak kollu ta' hawn fuq, kompli aqra.

Konfigurazzjoni ta' Journald għall-ġbir ta' messaġġi ta' log taħt Systemd

journald huwa daemon li jiġbor u jikteb entrati fil-ġurnal mis-sistema kollha; dawn huma essenzjalment messaġġi boot, messaġġi mill-kernel u minn syslog jew applikazzjonijiet varji u jaħżen il-messaġġi kollha f'post ċentrali - fajl tal-ġurnal.

Tista' tikkontrolla l-imġieba ta' journald permezz tal-fajl tal-konfigurazzjoni default tiegħu: /etc/systemd/journald.conf li jiġi ġġenerat fil-ħin tal-kompilazzjoni. Dan il-fajl fih għażliet li l-valuri tagħhom tista' tibdel biex tissodisfa r-rekwiżiti tal-ambjent lokali tiegħek.

Hawn taħt hemm kampjun ta' kif jidher il-fajl, meqjus bl-użu tal-kmand tal-qtates.

$ cat /etc/systemd/journald.conf 
# See journald.conf(5) for details.

[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitInterval=30s
#RateLimitBurst=1000
#SystemMaxUse=
#SystemKeepFree=
#SystemMaxFileSize=
#SystemMaxFiles=100
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#RuntimeMaxFiles=100
#MaxRetentionSec=
#MaxFileSec=1month
#ForwardToSyslog=yes
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg

Innota li diversi pakketti jinstallaw u jużaw estratti tal-konfigurazzjoni f'/usr/lib/systemd/*.conf.d/ u konfigurazzjonijiet tal-ħin tal-ġirja jistgħu jinstabu f'/run/systemd/journald.conf.d/*.conf li ma tistax neċessarjament użu.

Numru ta 'distribuzzjonijiet tal-Linux inkluż Ubuntu u d-derivattivi tiegħu bħal Linux Mint ma jippermettux ħażna persistenti ta' messaġġi boot fuq disk b'mod awtomatiku.

Huwa possibbli li din tkun attivata billi tissettja l-għażla \Ħażna għal \persistenti kif muri hawn taħt. Dan se joħloq id-direttorju /var/log/journal u l-fajls tal-ġurnali kollha se jinħażnu taħtu.

$ sudo vi /etc/systemd/journald.conf 
OR
$ sudo nano /etc/systemd/journald.conf 
[Journal]
Storage=persistent

Għal settings addizzjonali, sib it-tifsira tal-għażliet kollha li suppost jiġu kkonfigurati taħt it-taqsima [Ġurnal] billi ttajpja.

$ man journald.conf

Għal ġestjoni affidabbli ta 'log taħt systemd bl-użu ta' servizz journald, kun żgur li l-issettjar tal-ħin inkluż iż-żona tal-ħin huwa korrett fis-sistema.

Sabiex tara s-settings attwali tad-data u l-ħin fis-sistema tiegħek, ittajpja.

$ timedatectl 
OR
$ timedatectl status

Local time: Thu 2017-06-15 13:29:09 EAT
Universal time: Thu 2017-06-15 10:29:09 UTC
RTC time: Thu 2017-06-15 10:29:09
Time zone: Africa/Kampala (EAT, +0300)
Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no

Biex tissettja ż-żona tal-ħin korretta u possibbilment il-ħin tas-sistema, uża l-kmandi hawn taħt.

$ sudo timedatectl set-timezone  Africa/Kampala
$ sudo timedatectl set-time “13:50:00”

journalctl hija utilità użata biex tara l-kontenut tal-ġurnal systemd (li huwa miktub mis-servizz journald).

Biex turi z-zkuk kollha miġbura mingħajr ebda filtrazzjoni, ittajpja.

$ journalctl
-- Logs begin at Wed 2017-06-14 21:56:43 EAT, end at Thu 2017-06-15 12:28:19 EAT
Jun 14 21:56:43 tecmint systemd-journald[336]: Runtime journal (/run/log/journal
Jun 14 21:56:43 tecmint kernel: Initializing cgroup subsys cpuset
Jun 14 21:56:43 tecmint kernel: Initializing cgroup subsys cpu
Jun 14 21:56:43 tecmint kernel: Initializing cgroup subsys cpuacct
Jun 14 21:56:43 tecmint kernel: Linux version 4.4.0-21-generic ([email )
Jun 14 21:56:43 tecmint kernel: Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-
Jun 14 21:56:43 tecmint kernel: KERNEL supported cpus:
Jun 14 21:56:43 tecmint kernel:   Intel GenuineIntel
Jun 14 21:56:43 tecmint kernel:   AMD AuthenticAMD
Jun 14 21:56:43 tecmint kernel:   Centaur CentaurHauls
Jun 14 21:56:43 tecmint kernel: x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]
Jun 14 21:56:43 tecmint kernel: x86/fpu: Supporting XSAVE feature 0x01: 'x87 flo
Jun 14 21:56:43 tecmint kernel: x86/fpu: Supporting XSAVE feature 0x02: 'SSE reg
Jun 14 21:56:43 tecmint kernel: x86/fpu: Supporting XSAVE feature 0x04: 'AVX reg
Jun 14 21:56:43 tecmint kernel: x86/fpu: Enabled xstate features 0x7, context si
Jun 14 21:56:43 tecmint kernel: x86/fpu: Using 'eager' FPU context switches.
Jun 14 21:56:43 tecmint kernel: e820: BIOS-provided physical RAM map:
Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000000000000-0x00000000000
Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000000090000-0x00000000000
Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000000100000-0x000000001ff
Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000020000000-0x00000000201
Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000020200000-0x00000000400

Tista' turi lista ta' numri tal-boot (relattiva għall-boot attwali), l-IDs tagħhom, u l-timestamps tal-ewwel u l-aħħar messaġġ li jikkorrispondu mal-boot bl-għażla --list-boots.

$ journalctl --list-boots

-1 9fb590b48e1242f58c2579defdbbddc9 Thu 2017-06-15 16:43:36 EAT—Thu 2017-06-15 1
 0 464ae35c6e264a4ca087949936be434a Thu 2017-06-15 16:47:36 EAT—Thu 2017-06-15 1 

Biex tara l-entrati fil-ġurnal mill-boot kurrenti (numru 0), uża l-iswiċċ -b bħal dan (l-istess bħall-output tal-kampjun hawn fuq).

$ journalctl -b

u biex tara ġurnal mill-but preċedenti, uża l--1 pointer relattiv bl-għażla -b kif hawn taħt.

$ journalctl -b -1

Inkella, uża l-ID boot bħal din.

$ journalctl -b 9fb590b48e1242f58c2579defdbbddc9

Biex tuża l-ħin fil-format tal-Ħin Universali Koordinat (UTC), żid l-għażliet --utc kif ġej.

$ journalctl --utc

Biex tara l-entrati kollha minn data u ħin partikolari, eż. 15 ta' Ġunju 2017 fit-8:15 AM, ittajpja dan il-kmand.

$ journalctl --since "2017-06-15 08:15:00"
$ journalctl --since today
$ journalctl --since yesterday

Biex tara messaġġi ta' log reċenti (10 b'mod awtomatiku), uża l-marka -n kif muri hawn taħt.

$ journalctl -n
$ journalctl -n 20 

Biex tara biss messaġġi tal-kernel, simili għall-output tal-kmand dmesg, tista' tuża l-marka -k.

$ journalctl -k 
$ journalctl -k -b 
$ journalctl -k -b 9fb590b48e1242f58c2579defdbbddc9

Biex tkun tista' tara l-entrati kollha fil-ġurnal għal unità partikolari, uża l-iswiċċ -u kif ġej.

$ journalctl -u apache2.service

Biex żero 'l isfel għall-boot kurrenti, ittajpja dan il-kmand.

$ journalctl -b -u apache2.service

Biex turi zkuk mill-boot preċedenti, uża dan.

$ journalctl -b -1 -u apache2.service

Hawn taħt hawn xi kmandi utli oħra:

$ journalctl -u apache2.service  
$ journalctl -u apache2.service --since today
$ journalctl -u apache2.service -u nagios.service --since yesterday

Biex tara zkuk iġġenerati minn proċess speċifiku, speċifika huwa PID bħal dan.

$ journalctl _PID=19487
$ journalctl _PID=19487 --since today
$ journalctl _PID=19487 --since yesterday

Biex tara zkuk ġġenerati minn utent jew grupp speċifiku, speċifika l-ID tal-utent jew tal-grupp tiegħu bħal dan.

$ journalctl _UID=1000
$ journalctl _UID=1000 --since today
$ journalctl _UID=1000 -b -1 --since today

Biex turi z-zkuk kollha ġġenerati minn fajl (possibilment eżekutibbli), bħall-eżekutibbli D-Bus jew l-eżekutibbli bash, sempliċement ittajpja.

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

Tista' wkoll tiffiltra l-output ibbażat fuq prijoritajiet ta' messaġġ jew firxiet ta' prijorità billi tuża l-marka -p. Il-valuri possibbli huma: 0 – emerg, 1 – allert, 2 – crit, 3 – żball, 4 – twissija, 5 – avviż, 6 – info, 7 – debug):

$ journalctl -p err

Biex tispeċifika firxa, uża l-format hawn taħt (emerg to twissija).

$ journalctl -p 1..4
OR
$ journalctl -p emerg..warning

Tista' prattikament tara zkuk kif qed jinkitbu bl-għażla -f (simili għall-funzjonalità tail -f).

$ journalctl -f

Jekk trid tikkontrolla l-ifformattjar tal-output tal-entrati fil-ġurnal, żid il-marka -o u uża dawn l-għażliet: cat, export, json, json-pretty, json-sse, short, short-iso, qasir-monotoniku, qasir-preċiż u verbose (iċċekkja t-tifsira tal-għażliet fil-paġna man:

L-għażla tal-qtates turi l-messaġġ attwali ta 'kull dħul fil-ġurnal mingħajr l-ebda metadata (timestamp u l-bqija).

$ journalctl -b -u apache2.service -o cat

Biex tiċċekkja l-fajl tal-ġurnal għall-konsistenza interna, uża l-għażla --verifika. Jekk kollox huwa tajjeb, l-output għandu jindika PASS.

$ journalctl --verify

PASS: /run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/system.journal                               
491f68: Unused data (entry_offset==0)                                                                
PASS: /run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/[email 9866c3d4d.journal
PASS: /run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/[email 5d8945a9e.journal
PASS: /run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/[email 1becab02f.journal
PASS: /run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/[email 01cfcedff.journal

Tista' wkoll turi l-użu attwali tad-diska tal-fajls kollha tal-ġurnal bl-għażliet --disk-usage. Hija turi s-somma tal-użu tad-disk tal-fajls kollha tal-ġurnali arkivjati u attivi:

$ journalctl --disk-usage

Biex tħassar fajls tal-ġurnal qodma (arkivjati) mexxi l-kmandi hawn taħt:

$ sudo journalctl --vacuum-size=50M  #delete files until the disk space they use falls below the specified size
$ sudo journalctl --vacuum-time=1years	#delete files so that all journal files contain no data older than the specified timespan
$ sudo journalctl --vacuum-files=4     #delete files so that no more than the specified number of separate journal files remain in storage location

Fl-aħħar iżda mhux l-inqas, tista’ tagħti struzzjonijiet lil journald biex idawwar il-fajls tal-ġurnal bl-għażla --rotate. Innota li din id-direttiva ma terġax lura sakemm l-operazzjoni ta' rotazzjoni tkun lesta:

$ sudo journalctl --rotate

Għal gwida dwar l-użu u għażliet fil-fond, ara l-paġna man journalctl kif ġej.

$ man journalctl

Iċċekkja xi artikli utli.

  1. Ġestjoni tal-Proċess u s-Servizzi tal-Istartjar tas-Sistema (SysVinit, Systemd u Upstart)
  2. Petiti – Għodda ta' Analiżi ta' Log Sors Miftuħ għal SysAdmins tal-Linux
  3. Kif Issettja u Immaniġġja r-Rotazzjoni tal-Logg billi tuża Logrotate fil-Linux
  4. lnav – Ara u Analizza l-Apache Logs minn Terminal Linux

Dak hu għalissa. Uża r-rispons minn hawn taħt biex tistaqsi xi mistoqsijiet jew iżżidlek ħsibijiet dwar dan is-suġġett.