Hafa umsjón með annálsskilaboðum undir Systemd með því að nota Journalctl [Alhliða handbók]


Systemd er háþróaður kerfis- og þjónustustjóri fyrir Linux kerfi: init-púkaskipti sem ætlað er að hefja ferla samhliða við ræsingu kerfisins. Það er nú stutt í fjölda núverandi almennra dreifingar, þar á meðal Fedora, Debian, Ubuntu, OpenSuSE, Arch, RHEL, CentOS osfrv.

Áðan útskýrðum við söguna á bak við 'init' og 'systemd'; þar sem við ræddum hvað púkarnir tveir eru, hvers vegna tæknilega þurfti að skipta út 'init' fyrir 'systemd' sem og helstu eiginleika systemd.

Einn helsti kostur systemd umfram önnur algeng init kerfi er stuðningur við miðstýrða stjórnun á kerfis- og ferlaskráningu með því að nota dagbók. Í þessari grein munum við læra hvernig á að stjórna og skoða logskilaboð undir systemd með journalctl skipuninni í Linux.

Mikilvægt: Áður en þú ferð lengra í þessari handbók gætirðu viljað læra hvernig á að stjórna því að búa til og keyra nýjar þjónustueiningar í systemd með því að nota skeljaforskriftir í Linux. Hins vegar, ef þú ert í lagi með allt ofangreint, haltu áfram að lesa í gegnum.

Stilla dagbók til að safna annálsskilaboðum undir Systemd

journald er púki sem safnar og skrifar dagbókarfærslur úr öllu kerfinu; þetta eru í raun ræsiskilaboð, skilaboð frá kjarna og frá syslog eða ýmsum forritum og það geymir öll skilaboðin á miðlægum stað - dagbókarskrá.

Þú getur stjórnað hegðun journald í gegnum sjálfgefna stillingarskrá þess: /etc/systemd/journald.conf sem er búin til við þýðingu. Þessi skrá inniheldur valmöguleika sem þú getur breytt gildum þeirra til að passa við staðbundnar kröfur þínar.

Hér að neðan er sýnishorn af því hvernig skráin lítur út, skoðuð með cat skipuninni.

$ 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

Athugaðu að ýmsar pakkauppsetningar og notkun stillingarútdráttar í /usr/lib/systemd/*.conf.d/ og keyrslutímastillingar er að finna í /run/systemd/journald.conf.d/*.conf sem þú ert ekki endilega nota.

Nokkrar Linux dreifingar, þar á meðal Ubuntu og afleiður þess eins og Linux Mint, gera sjálfgefið ekki viðvarandi geymslu ræsiskilaboða á diski kleift.

Það er hægt að virkja þetta með því að stilla \Geymsla valkostinn á \viðvarandi eins og sýnt er hér að neðan. Þetta mun búa til /var/log/journal möppuna og allar dagbókarskrár verða geymdar undir henni.

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

Fyrir frekari stillingar, finndu merkingu allra valkosta sem eiga að vera stilltir undir „[Journal]“ hlutanum með því að slá inn.

$ man journald.conf

Fyrir áreiðanlega annálastjórnun undir systemd með því að nota dagbókarþjónustu, vertu viss um að tímastillingar, þar á meðal tímabelti, séu réttar á kerfinu.

Til að skoða núverandi dagsetningar- og tímastillingar á kerfinu þínu skaltu slá inn.

$ 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

Notaðu skipanirnar hér að neðan til að stilla rétt tímabelti og hugsanlega kerfistíma.

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

journalctl er tól sem er notað til að skoða innihald systemd dagbókarinnar (sem er skrifað af journald þjónustu).

Til að sýna alla safnaða annála án síunar skaltu slá inn.

$ 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

Þú getur sýnt lista yfir ræsinúmer (miðað við núverandi ræsingu), auðkenni þeirra og tímastimpla fyrstu og síðustu skilaboðanna sem samsvara ræsingunni með --list-boots valkostinum.

$ 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 

Til að skoða dagbókarfærslurnar frá núverandi ræsingu (númer 0), notaðu -b rofann svona (sama og sýnishornið hér að ofan).

$ journalctl -b

og til að sjá dagbók frá fyrri ræsingu, notaðu -1 hlutfallslegan bendilinn með -b valkostinum eins og hér að neðan.

$ journalctl -b -1

Að öðrum kosti skaltu nota ræsikennið eins og þetta.

$ journalctl -b 9fb590b48e1242f58c2579defdbbddc9

Til að nota tíma á UTC-sniði (Coordinated Universal Time) skaltu bæta --utc við valmöguleikunum á eftirfarandi hátt.

$ journalctl --utc

Til að sjá allar færslur frá tiltekinni dagsetningu og tíma, t.d. 15. júní 2017 kl. 8:15, sláðu inn þessa skipun.

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

Til að skoða nýleg annálsskilaboð (10 sjálfgefið), notaðu -n fánann eins og sýnt er hér að neðan.

$ journalctl -n
$ journalctl -n 20 

Til að sjá aðeins kjarnaskilaboð, svipað og dmesg skipunarúttakið, geturðu notað -k fánann.

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

Til að geta skoðað allar dagbókarfærslur fyrir tiltekna einingu, notaðu -u rofann sem hér segir.

$ journalctl -u apache2.service

Til að núllstilla í núverandi ræsingu skaltu slá inn þessa skipun.

$ journalctl -b -u apache2.service

Notaðu þetta til að sýna logs frá fyrri ræsingu.

$ journalctl -b -1 -u apache2.service

Hér að neðan eru nokkrar aðrar gagnlegar skipanir:

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

Til að skoða annála sem myndast af tilteknu ferli, tilgreindu PID þess eins og þetta.

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

Til að skoða annála sem myndast af tilteknum notanda eða hópi skaltu tilgreina notanda- eða hópauðkenni hans eins og þetta.

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

Til að sýna alla annála sem myndast af skrá (hugsanlega keyrslu), eins og D-Bus keyrsluna eða bash keyrsluna, einfaldlega sláðu inn.

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

Þú getur líka síað úttak byggt á forgangsröðun skilaboða eða forgangssviðum með því að nota -p fánann. Möguleg gildi eru: 0 – koma fram, 1 – viðvörun, 2 – crit, 3 – villa, 4 – viðvörun, 5 – tilkynning, 6 – upplýsingar, 7 – villuleit):

$ journalctl -p err

Til að tilgreina svið, notaðu sniðið hér að neðan (kom til viðvörunar).

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

Þú getur nánast horft á annála þegar þeir eru skrifaðir með -f valkostinum (svipað og tail -f virkni).

$ journalctl -f

Ef þú vilt stjórna úttakssniði dagbókarfærslna skaltu bæta við -o fánanum og nota þessa valkosti: cat, export, json, json-pretty, json-sse, short, short-iso, stutt-eintóna, stutt-nákvæm og margorð(athugaðu merkingu valkosta á mansíðunni:

Kattavalkosturinn sýnir raunveruleg skilaboð hverrar dagbókarfærslu án nokkurra lýsigagna (tímastimpil og svo framvegis).

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

Til að athuga hvort innra samræmi sé í dagbókarskránni, notaðu --verify valkostinn. Ef allt er í lagi ætti úttakið að gefa til kynna 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

Þú getur líka sýnt núverandi disknotkun allra dagbókarskráa með --disk-notkun valkostunum. Það sýnir summan af disknotkun allra geymdra og virkra dagbókarskráa:

$ journalctl --disk-usage

Til að eyða gömlum (geymdum) dagbókarskrám skaltu keyra skipanirnar hér að neðan:

$ 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

Síðast en ekki síst geturðu gefið journald fyrirmæli um að snúa dagbókarskrám með --rotate valkostinum. Athugaðu að þessi tilskipun kemur ekki aftur fyrr en snúningsaðgerðinni er lokið:

$ sudo journalctl --rotate

Fyrir ítarlega notkunarleiðbeiningar og valkosti, skoðaðu journalctl man síðuna sem hér segir.

$ man journalctl

Skoðaðu nokkrar gagnlegar greinar.

  1. Stjórna kerfisræsingarferli og þjónustu (SysVinit, Systemd og Upstart)
  2. Petiti – Opinn uppspretta annálagreiningartól fyrir Linux SysAdmins
  3. Hvernig á að setja upp og stjórna snúningi annála með því að nota Logrotate í Linux
  4. lnav – Horfðu á og greindu Apache logs frá Linux flugstöð

Það er það í bili. Notaðu endurgjöfina að neðan til að spyrja spurninga eða bæta við skoðunum þínum um þetta efni.