Pagdumala sa mga Mensahe sa Log Ubos sa Systemd Gamit ang Journalctl [Komprehensibo nga Giya]
Ang Systemd usa ka cutting-edge nga sistema ug service manager alang sa mga sistema sa Linux: usa ka init nga daemon nga kapuli nga gituyo aron magsugod sa mga proseso nga managsama sa system boot. Gisuportahan na kini karon sa usa ka gidaghanon sa kasamtangan nga mainstream distribution lakip na ang Fedora, Debian, Ubuntu, OpenSuSE, Arch, RHEL, CentOS, ug uban pa.
Sa sayo pa, among gipasabot ang istorya luyo sa 'init' ug 'systemd'; diin among gihisgutan kung unsa ang duha ka mga daemon, ngano nga ang 'init' kinahanglan nga pulihan sa 'systemd' ingon man ang mga nag-unang bahin sa systemd.
Usa sa mga nag-unang bentaha sa systemd sa ubang mga kasagarang init nga sistema mao ang, suporta alang sa sentralisadong pagdumala sa sistema ug mga proseso sa pag-log gamit ang usa ka journal. Niini nga artikulo, makakat-on kita unsaon pagdumala ug pagtan-aw sa mga mensahe sa log ubos sa systemd gamit ang journalctl command sa Linux.
Importante: Sa dili pa mobalhin og dugang niini nga giya, mahimo nimong makat-on unsaon pagdumala sa paghimo ug pagpadagan sa bag-ong mga service unit sa systemd gamit ang shell scripts sa Linux. Bisan pa, kung okay ka sa tanan sa ibabaw, ipadayon ang pagbasa.
Pag-configure sa Journald alang sa Pagkolekta sa mga Mensahe sa Log Ubos sa Systemd
journald kay usa ka daemon nga nagtigom ug nagsulat sa mga entry sa journal gikan sa tibuok sistema; kini mao ang esensya nga mga mensahe sa boot, mga mensahe gikan sa kernel ug gikan sa syslog o lain-laing mga aplikasyon ug kini nagtipig sa tanan nga mga mensahe sa usa ka sentro nga lokasyon - journal file.
Mahimo nimong kontrolon ang kinaiya sa journald pinaagi sa default configuration file niini: /etc/systemd/journald.conf nga namugna sa oras sa pag-compile. Kini nga file adunay mga kapilian kansang mga kantidad mahimo nimong usbon aron ipahiangay sa imong lokal nga mga kinahanglanon sa palibot.
Sa ubos usa ka sample kung unsa ang hitsura sa file, gitan-aw gamit ang command sa cat.
$ 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
Timan-i nga ang lain-laing mga pag-install sa package ug paggamit sa mga extract sa configuration sa /usr/lib/systemd/*.conf.d/ ug run time configurations makita sa /run/systemd/journald.conf.d/*.conf nga dili nimo kinahanglan. paggamit.
Daghang mga distribusyon sa Linux lakip na ang Ubuntu ug kini nga mga derivatives sama sa Linux Mint wala makahimo sa padayon nga pagtipig sa mga mensahe sa boot sa disk pinaagi sa default.
Posible nga mahimo kini pinaagi sa pagbutang sa opsyon nga \Storage sa \persistent ingon sa gipakita sa ubos. Kini maghimo sa /var/log/journal nga direktoryo ug ang tanang journal files itago sa ilawom niini.
$ sudo vi /etc/systemd/journald.conf OR $ sudo nano /etc/systemd/journald.conf
[Journal] Storage=persistent
Alang sa dugang nga mga setting, pangitaa ang kahulugan sa tanan nga mga kapilian nga kinahanglan nga i-configure sa ilawom sa seksyon nga [Journal] pinaagi sa pag-type.
$ man journald.conf
Alang sa kasaligan nga pagdumala sa log ubos sa systemd gamit ang journald nga serbisyo, siguroha nga ang mga setting sa oras lakip ang timezone husto sa sistema.
Aron matan-aw ang karon nga mga setting sa petsa ug oras sa imong sistema, i-type.
$ 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
Aron mabutang ang husto nga timezone ug posible nga oras sa sistema, gamita ang mga mando sa ubos.
$ sudo timedatectl set-timezone Africa/Kampala $ sudo timedatectl set-time “13:50:00”
Ang journalctl usa ka gamit nga gigamit sa pagtan-aw sa mga sulod sa systemd journal (nga gisulat sa journald service).
Aron ipakita ang tanang nakolekta nga mga troso nga walay bisan unsang pagsala, i-type.
$ 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
Mahimo nimong ipakita ang usa ka lista sa mga numero sa boot (relasyon sa karon nga boot), ilang mga ID, ug ang mga timestamp sa una ug katapusan nga mensahe nga katumbas sa boot nga adunay kapilian nga --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
Para tan-awon ang mga journal entries gikan sa kasamtangang boot (numero 0), gamita ang -b
switch sama niini (parehas sa sample output sa ibabaw).
$ journalctl -b
ug para makakita ug journal gikan sa miaging boot, gamita ang -1
relative pointer nga adunay -b
nga opsyon sama sa ubos.
$ journalctl -b -1
Sa laing paagi, gamita ang boot ID nga sama niini.
$ journalctl -b 9fb590b48e1242f58c2579defdbbddc9
Aron magamit ang oras sa Coordinated Universal Time (UTC) nga pormat, idugang ang --utc
nga mga kapilian sama sa mosunod.
$ journalctl --utc
Aron makita ang tanan nga mga entry sukad sa usa ka partikular nga petsa ug oras, e.g. Hunyo 15th, 2017 sa 8:15 AM, i-type kini nga sugo.
$ journalctl --since "2017-06-15 08:15:00" $ journalctl --since today $ journalctl --since yesterday
Para tan-awon ang bag-o nga mga mensahe sa log (10 sa default), gamita ang -n
nga bandera sama sa gipakita sa ubos.
$ journalctl -n $ journalctl -n 20
Aron makita lang ang mga mensahe sa kernel, susama sa dmesg command output, mahimo nimong gamiton ang -k
flag.
$ journalctl -k $ journalctl -k -b $ journalctl -k -b 9fb590b48e1242f58c2579defdbbddc9
Para matan-aw ang tanang journal entries para sa usa ka partikular nga unit, gamita ang -u
switch sama sa mosunod.
$ journalctl -u apache2.service
Aron ma-zero hangtod sa karon nga boot, i-type kini nga mando.
$ journalctl -b -u apache2.service
Aron ipakita ang mga log gikan sa miaging boot, gamita kini.
$ journalctl -b -1 -u apache2.service
Sa ubos mao ang uban nga mapuslanon nga mga sugo:
$ journalctl -u apache2.service $ journalctl -u apache2.service --since today $ journalctl -u apache2.service -u nagios.service --since yesterday
Aron matan-aw ang mga troso nga namugna sa usa ka piho nga proseso, ipiho kini nga PID sama niini.
$ journalctl _PID=19487 $ journalctl _PID=19487 --since today $ journalctl _PID=19487 --since yesterday
Aron matan-aw ang mga log nga nahimo sa usa ka piho nga tiggamit o grupo, ipiho kini nga user o grupo ID nga sama niini.
$ journalctl _UID=1000 $ journalctl _UID=1000 --since today $ journalctl _UID=1000 -b -1 --since today
Aron ipakita ang tanang log nga namugna sa usa ka file (posible nga executable), sama sa D-Bus executable o bash executables, i-type lang.
$ journalctl /usr/bin/dbus-daemon $ journalctl /usr/bin/bash
Mahimo usab nimong i-filter ang output base sa mga priority sa mensahe o priority range gamit ang -p
flag. Ang posibleng mga kantidad mao ang: 0 – emerg, 1 – alert, 2 – crit, 3 – err, 4 – warning, 5 – notice, 6 – info, 7 – debug):
$ journalctl -p err
Aron matino ang usa ka han-ay, gamita ang pormat sa ubos (mogawas sa pasidaan).
$ journalctl -p 1..4 OR $ journalctl -p emerg..warning
Mahimo nimong tan-awon ang mga troso samtang kini gisulat gamit ang opsyon nga -f
(parehas sa tail -f functionality).
$ journalctl -f
Kung gusto nimong kontrolon ang output formatting sa mga entry sa journal, idugang ang -o
nga bandila ug gamita kini nga mga opsyon: cat, export, json, json-pretty, json-sse, short, short-iso, mubo-monotonic, mubo-tukma ug verbose(susiha ang kahulogan sa mga kapilian sa man page:
Ang opsyon sa iring nagpakita sa aktuwal nga mensahe sa matag entry sa journal nga walay bisan unsang metadata (timestamp ug uban pa).
$ journalctl -b -u apache2.service -o cat
Aron masusi ang journal file alang sa internal consistency, gamita ang --verify
nga opsyon. Kung ang tanan maayo, ang output kinahanglan magpakita sa usa ka 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
Mahimo usab nimo ipakita ang kasamtangan nga paggamit sa disk sa tanang mga file sa journal nga adunay mga kapilian nga --disk-usage
. Gipakita niini ang kadaghanon sa paggamit sa disk sa tanan nga na-archive ug aktibo nga mga file sa journal:
$ journalctl --disk-usage
Aron mapapas ang daan (naka-archive) nga mga file sa journal ipadagan ang mga sugo sa ubos:
$ 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
Katapusan apan dili labing gamay, mahimo nimong tudloan ang journald sa pag-rotate sa mga file sa journal gamit ang kapilian nga --rotate
. Timan-i nga kini nga direktiba dili mobalik hangtod mahuman ang rotation operation:
$ sudo journalctl --rotate
Alang sa usa ka lawom nga giya sa paggamit ug mga kapilian, tan-awa ang journalctl man page sama sa mosunod.
$ man journalctl
Susiha ang pipila ka mapuslanon nga mga artikulo.
- Pagdumala sa Proseso ug Serbisyo sa Pagsugod sa Sistema (SysVinit, Systemd ug Upstart)
- Petiti – Usa ka Open Source Log Analysis Tool para sa Linux SysAdmins
- Unsaon Pag-setup ug Pagdumala sa Log Rotation Gamit ang Logrotate sa Linux
- lnav – Tan-awa ug Analisaha ang mga Apache Log gikan sa Linux Terminal
Mao na kini sa pagkakaron. Gamita ang feedback gikan sa ubos sa pagpangutana sa bisan unsang pangutana o pagdugang sa imong mga hunahuna bahin niini nga hilisgutan.