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.
- Ġestjoni tal-Proċess u s-Servizzi tal-Istartjar tas-Sistema (SysVinit, Systemd u Upstart)
- Petiti – Għodda ta' Analiżi ta' Log Sors Miftuħ għal SysAdmins tal-Linux
- Kif Issettja u Immaniġġja r-Rotazzjoni tal-Logg billi tuża Logrotate fil-Linux
- 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.