Hallake logisõnumeid Systemd all kasutades Journalctl [põhjalik juhend]


Systemd on Linuxi süsteemide tipptasemel süsteemide ja teenuste haldur: init-deemoni asendus, mis on mõeldud protsesside käivitamiseks paralleelselt süsteemi käivitamisel. Nüüd toetatakse seda paljudes praegustes peavoolu jaotustes, sealhulgas Fedora, Debian, Ubuntu, OpenSuSE, Arch, RHEL, CentOS jne.

Varem selgitasime ‘init’ ja ’systemd’ taga olevaid lugusid; kus arutasime, mis on need kaks deemonit, miks oli vaja „init” tehniliselt asendada „systemd” -ga, samuti ka süsteemid põhijooni.

Süsteemi üks peamisi eeliseid teiste tavaliste init-süsteemide ees on süsteemide ja protsesside logimise tsentraliseeritud haldamise tugi päeviku abil. Selles artiklis õpime, kuidas hallata ja vaadata logisõnumeid systemd all, kasutades Linuxis käsku journalctl.

Tähtis: Enne selles juhendis edasi liikumist võite õppida, kuidas hallata uute teenusüksuste loomist ja käitamist süsteemis Linux, kasutades Linuxi shelliskripte. Kui teil on aga kõik ülaltoodu korras, jätkake lugemist.

Journaldi seadistamine logisõnumite kogumiseks Systemd all

journald on deemon, mis kogub ja kirjutab päevikute kirjed kogu süsteemist; Need on sisuliselt alglaadimissõnumid, kerneli ja syslogist või erinevatest rakendustest pärinevad sõnumid ning see salvestab kõik kirjad kesksesse kohta - ajakirjafaili.

Journalnaldi käitumist saate juhtida selle vaikekonfiguratsioonifaili kaudu: /etc/systemd/journald.conf, mis on loodud kompileerimise ajal. See fail sisaldab valikuid, mille väärtusi võite muuta vastavalt oma kohaliku keskkonna nõuetele.

Allpool on näidis, kuidas fail välja näeb, vaadates seda kassi käsu abil.

$ 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

Pange tähele, et mitmesugused pakettide installid ja konfiguratsiooniekstraktid kataloogis /usr/lib/systemd/*.conf.d/ ja käitusaja konfiguratsioonid leiate kataloogist /run/systemd/journald.conf.d/*.conf, mida te ei pruugi tingimata kasutamine.

Paljud Linuxi jaotused, sealhulgas Ubuntu ja selle derivaadid, nagu Linux Mint, ei võimalda vaikimisi kettale alglaadimisteate püsivat salvestamist.

Selle on võimalik lubada, seadistades suvandi\"Salvestamine" väärtusele\"püsiv", nagu allpool näidatud. See loob kataloogi/var/log/journal ja kõik selle failid salvestatakse.

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

Lisaseadete leidmiseks leidke tippimise abil kõigi jaotises „[Päevik]” konfigureeritavate valikute tähendus.

$ man journald.conf

Usaldusväärseks logide haldamiseks systemd-s, kasutades journalnald-teenust, veenduge, et ajaseaded koos ajavööndiga oleksid süsteemis õiged.

Süsteemi praeguste kuupäeva ja kellaaja seadete kuvamiseks tippige.

$ 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

Õige ajavööndi ja võimaliku süsteemiaja määramiseks kasutage allolevaid käske.

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

journalctl on utiliit, mida kasutatakse systemd ajakirja sisu vaatamiseks (mille on kirjutanud journalnald-teenus).

Kõigi kogutud logide kuvamiseks ilma filtreerimiseta tippige.

$ 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

Saate kuvada alglaadimisnumbrite loendi (praeguse alglaadimise suhtes), nende ID-d ja esimese ja viimase alglaadimisele vastava teate ajatemplid, kasutades valikut --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 

Praeguse alglaadimise päevakirjete (number 0) vaatamiseks kasutage lülitit -b niimoodi (sama mis ülaltoodud näidisväljundis).

$ journalctl -b

ja eelmise alglaadimise päeviku vaatamiseks kasutage suhtelist kursorit -1 koos võimalusega -b nagu allpool.

$ journalctl -b -1

Teise võimalusena võite kasutada sellist alglaadimise ID-d.

$ journalctl -b 9fb590b48e1242f58c2579defdbbddc9

Aja kasutamiseks koordineeritud universaalaja (UTC) vormingus lisage valikud --utc järgmiselt.

$ journalctl --utc

Kõigi kirjete nägemiseks alates teatud kuupäevast ja kellaajast, nt. 15. juuni 2017, kell 8:15, tippige see käsk.

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

Viimaste logisõnumite (vaikimisi 10) vaatamiseks kasutage lippu -n , nagu allpool näidatud.

$ journalctl -n
$ journalctl -n 20 

Ainult tuumade sõnumite nägemiseks, mis on sarnaselt käsu dmesg väljundile, võite kasutada lipu -k .

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

Konkreetse üksuse kõigi päevikute kirjete vaatamiseks kasutage lülitit -u järgmiselt.

$ journalctl -u apache2.service

Praeguse alglaadimise nullimiseks sisestage see käsk.

$ journalctl -b -u apache2.service

Eelmise alglaadimise logide kuvamiseks kasutage seda.

$ journalctl -b -1 -u apache2.service

Allpool on mõned muud kasulikud käsud:

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

Konkreetse protsessi abil loodud logide kuvamiseks määrake selle PID niimoodi.

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

Konkreetse kasutaja või rühma loodud logide kuvamiseks määrake selle kasutaja- või rühma ID.

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

Kõigi faili (võib-olla ka käivitatava) loodud logide, näiteks D-Bus käivitatava või bashi käivitatava faili kuvamiseks sisestage lihtsalt.

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

Samuti saate lipu -p abil väljundit filtreerida sõnumi prioriteetide või prioriteetide vahemike põhjal. Võimalikud väärtused on: 0 - esilekerkimine, 1 - hoiatus, 2 - kriitiline, 3 - viga, 4 - hoiatus, 5 - teade, 6 - teave, 7 - silumine):

$ journalctl -p err

Vahemiku määramiseks kasutage allolevat vormingut (tõstke hoiatuseni).

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

Valikuid -f saate praktiliselt vaadata logide kirjutamise ajal (sarnaselt funktsioonile tail -f).

$ journalctl -f

Kui soovite kontrollida ajakirja kirjete väljundvormingut, lisage lipp -o ja kasutage neid valikuid: kass, eksport, json, json-pretty, json-sse, lühike, lühike iso, lühike-monotoonne, lühike-täpne ja mitmekülgne (kontrollige valikute tähendust manulehel:

Kassivalik näitab iga päevikukirje tegelikku sõnumit ilma metaandmeteta (ajatempel ja nii edasi).

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

Päevikufaili sisemise järjepidevuse kontrollimiseks kasutage valikut --verify . Kui kõik on korras, peaks väljund näitama 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

Kõigi päevikufailide praegust kettakasutust saate kuvada ka suvanditega --disk-use . See näitab kõigi arhiivitud ja aktiivsete päevikute failide kettakasutuse summat:

$ journalctl --disk-usage

Vanade (arhiveeritud) ajakirjafailide kustutamiseks käivitage järgmised käsud:

$ 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

Viimasena, kuid mitte vähem tähtsana, saate juhise journalnaldi käsu ajakirjafaile pöörama, kasutades valikut --rotate . Pange tähele, et see direktiiv naaseb enne, kui pöörlemisoperatsioon on lõppenud:

$ sudo journalctl --rotate

Põhjaliku kasutusjuhendi ja valikute saamiseks vaadake journalctl-i manulehte järgmiselt.

$ man journalctl

Vaadake mõnda kasulikku artiklit.

  1. Süsteemi käivitamise protsessi ja teenuste haldamine (SysVinit, Systemd ja Upstart)
  2. Petiti - Linuxi SysAdminsi avatud lähtekoodiga logianalüüsi tööriist
  3. Kuidas logi pööramist seadistada ja hallata, kasutades Linuxis rakendust Logrotate
  4. lnav - vaadake ja analüüsige Linuxi terminali Apache'i logisid

Praegu on see kõik. Selle teema kohta küsimuste esitamiseks või mõtete lisamiseks kasutage allpool toodud tagasisidet.