ຈັດການຂໍ້ຄວາມບັນທຶກພາຍໃຕ້ລະບົບທີ່ໃຊ້ລະບົບ Journalctl [ຄູ່ມືທີ່ສົມບູນແບບ]


Systemd ແມ່ນລະບົບການຕັດຕໍ່ແລະຜູ້ຈັດການບໍລິການ ສຳ ລັບລະບົບ Linux: ການທົດແທນ daemon ເລີ່ມຕົ້ນທີ່ມີຈຸດປະສົງເພື່ອເລີ່ມຕົ້ນຂັ້ນຕອນຕ່າງໆໃນຂະຫນານທີ່ boot system. ປະຈຸບັນມັນໄດ້ຮັບການສະ ໜັບ ສະ ໜູນ ໃນການແຈກຢາຍກະແສຫຼັກຫຼາຍຢ່າງລວມທັງ Fedora, Debian, Ubuntu, OpenSuSE, Arch, RHEL, CentOS, ແລະອື່ນໆ.

ກ່ອນ ໜ້າ ນີ້, ພວກເຮົາໄດ້ອະທິບາຍເລື່ອງທີ່ຢູ່ເບື້ອງຫຼັງ ‘init’ ແລະ ‘systemd’; ບ່ອນທີ່ພວກເຮົາໄດ້ສົນທະນາກັນວ່າສອງ daemons ແມ່ນຫຍັງ, ເປັນຫຍັງ 'init' ທີ່ຕ້ອງການທາງດ້ານເຕັກນິກເພື່ອທົດແທນດ້ວຍ 'systemd' ພ້ອມທັງຄຸນລັກສະນະຫຼັກຂອງ systemd.

ໜຶ່ງ ໃນບັນດາຂໍ້ໄດ້ປຽບຕົ້ນຕໍຂອງລະບົບທີ່ຢູ່ ເໜືອ ລະບົບລິເລີ່ມອື່ນໆທົ່ວໄປແມ່ນການສະ ໜັບ ສະ ໜູນ ການຄຸ້ມຄອງສູນກາງຂອງລະບົບແລະປຸງແຕ່ງການຕັດໄມ້ໂດຍໃຊ້ວາລະສານ ໃນບົດຂຽນນີ້, ພວກເຮົາຈະຮຽນຮູ້ວິທີການຈັດການແລະເບິ່ງຂໍ້ຄວາມ log ພາຍໃຕ້ລະບົບທີ່ໃຊ້ ຄຳ ສັ່ງວາລະສານໃນ Linux.

ສິ່ງ ສຳ ຄັນ: ກ່ອນທີ່ຈະກ້າວຕໍ່ໄປໃນຄູ່ມືນີ້, ທ່ານອາດຈະຕ້ອງການຮຽນຮູ້ວິທີການຈັດການສ້າງແລະ ດຳ ເນີນການ ໜ່ວຍ ບໍລິການ ໃໝ່ ໃນ systemd ໂດຍ ນຳ ໃຊ້ shell shell ໃນ Linux. ເຖິງຢ່າງໃດກໍ່ຕາມ, ຖ້າທ່ານບໍ່ເປັນຫຍັງກັບທັງ ໝົດ ຂ້າງເທິງ, ສືບຕໍ່ອ່ານຕໍ່.

ການ ກຳ ຫນົດຄ່າວາລະສານ ສຳ ລັບການລວບລວມຂໍ້ຄວາມບັນທຶກພາຍໃຕ້ລະບົບ

journald ແມ່ນ daemon ທີ່ລວບລວມແລະຂຽນລາຍການວາລະສານຈາກທຸກລະບົບ; ເຫຼົ່ານີ້ແມ່ນຂໍ້ຄວາມທີ່ ຈຳ ເປັນ, ຂໍ້ຄວາມຈາກແກ່ນແລະຈາກ syslog ຫຼືໂປແກຼມຕ່າງໆແລະມັນເກັບຂໍ້ຄວາມທັງ ໝົດ ໄວ້ໃນສະຖານທີ່ສູນກາງ - ເອກະສານວາລະສານ.

ທ່ານສາມາດຄວບຄຸມພຶດຕິ ກຳ ຂອງວາລະສານຜ່ານເອກະສານການຕັ້ງຄ່າເລີ່ມຕົ້ນຂອງມັນ: /etc/systemd/journald.conf ເຊິ່ງສ້າງຂື້ນໃນເວລາທີ່ລວບລວມ. ເອກະສານນີ້ມີຕົວເລືອກທີ່ຄຸນຄ່າຂອງທ່ານທີ່ທ່ານອາດຈະປ່ຽນເພື່ອ ເໝາະ ສົມກັບຄວາມຕ້ອງການດ້ານສິ່ງແວດລ້ອມໃນທ້ອງຖິ່ນຂອງທ່ານ.

ຂ້າງລຸ່ມນີ້ແມ່ນຕົວຢ່າງຂອງແຟ້ມເອກະສານ, ເບິ່ງໂດຍໃຊ້ ຄຳ ສັ່ງແມວ.

$ 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

ໃຫ້ສັງເກດວ່າຊຸດຕ່າງໆຕິດຕັ້ງແລະ ນຳ ໃຊ້ສານສະກັດຈາກການຕັ້ງຄ່າໃນ /usr/lib/systemd/*.conf.d/ ແລະ ດຳ ເນີນການຕັ້ງຄ່າເວລາສາມາດພົບໄດ້ໃນ /run/systemd/journald.conf.d/*.conf ເຊິ່ງທ່ານອາດຈະບໍ່ ຈຳ ເປັນ ການນໍາໃຊ້.

ການແຈກແຈງ Linux ຈຳ ນວນ ໜຶ່ງ ລວມທັງ Ubuntu ແລະມັນອະນຸພັນຄື Linux Mint ບໍ່ເຮັດໃຫ້ການເກັບຂໍ້ຄວາມ boot ຢູ່ໃນ disk ເປັນປະ ຈຳ.

ມັນເປັນໄປໄດ້ທີ່ຈະເປີດໃຊ້ງານນີ້ໂດຍການຕັ້ງຄ່າ“ ການເກັບຮັກສາ” ທາງເລືອກທີ່ຈະ“ ທົນນານ” ດັ່ງຮູບຂ້າງລຸ່ມ ນີ້ຈະສ້າງໄດເລກະທໍລີ/var/log/journal ແລະເອກະສານວາລະສານທັງ ໝົດ ຈະຖືກເກັບຢູ່ພາຍໃຕ້ມັນ.

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

ສຳ ລັບການຕັ້ງຄ່າເພີ່ມເຕີມ, ຊອກຫາຄວາມ ໝາຍ ຂອງຕົວເລືອກທັງ ໝົດ ທີ່ຄາດວ່າຈະຖືກປັບແຕ່ງພາຍໃຕ້ສ່ວນ“ [ວາລະສານ]” ໂດຍການພິມ.

$ man journald.conf

ສຳ ລັບການຈັດການບັນທຶກໄມ້ທີ່ ໜ້າ ເຊື່ອຖືພາຍໃຕ້ລະບົບທີ່ ນຳ ໃຊ້ການບໍລິການວາລະສານ, ຮັບປະກັນວ່າການ ກຳ ນົດເວລາລວມທັງເຂດເວລາແມ່ນຖືກຕ້ອງໃນລະບົບ.

ເພື່ອເບິ່ງການ ກຳ ນົດວັນທີແລະເວລາໃນປະຈຸບັນໃນລະບົບຂອງທ່ານ, ໃຫ້ພິມ.

$ 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

ເພື່ອ ກຳ ນົດເຂດເວລາທີ່ຖືກຕ້ອງແລະອາດຈະເປັນເວລາຂອງລະບົບ, ໃຫ້ໃຊ້ ຄຳ ສັ່ງຂ້າງລຸ່ມນີ້.

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

ວາລະສານແມ່ນສິ່ງປະໂຫຍດທີ່ໃຊ້ເພື່ອເບິ່ງເນື້ອໃນຂອງວາລະສານລະບົບ (ເຊິ່ງຂຽນໂດຍການບໍລິການວາລະສານ).

ເພື່ອສະແດງບັນທຶກການເກັບ ກຳ ທັງ ໝົດ ໂດຍບໍ່ມີການກັ່ນຕອງໃດໆ, ປະເພດ.

$ 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

ທ່ານສາມາດສະແດງບັນຊີຂອງເລກລະຫັດເກີບ (ທຽບກັບເກີບປັດຈຸບັນ), ບັດປະ ຈຳ ຕົວຂອງພວກເຂົາ, ແລະຕາຕະລາງເວລາຂອງຂໍ້ຄວາມ ທຳ ອິດແລະສຸດທ້າຍທີ່ສອດຄ້ອງກັບເກີບທີ່ມີທາງເລືອກ - 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 

ເພື່ອເບິ່ງລາຍການຂອງວາລະສານຈາກເກີບປັດຈຸບັນ (ໝາຍ ເລກ 0), ໃຫ້ໃຊ້ປຸ່ມ -b ປ່ຽນແບບນີ້ (ຄືກັນກັບຜົນໄດ້ຮັບຕົວຢ່າງຂ້າງເທິງ).

$ journalctl -b

ແລະເພື່ອເບິ່ງວາລະສານຈາກເກີບທີ່ຜ່ານມາ, ໃຫ້ໃຊ້ຕົວຊີ້ທິດທາງທີ່ກ່ຽວຂ້ອງກັບ -b ທີ່ຢູ່ຂ້າງລຸ່ມນີ້.

$ journalctl -b -1

ອີກທາງເລືອກ, ໃຊ້ລະຫັດ boot ແບບນີ້.

$ journalctl -b 9fb590b48e1242f58c2579defdbbddc9

ເພື່ອໃຊ້ເວລາໃນຮູບແບບການປະສານງານຂອງເວລາສາກົນ (UTC), ຕື່ມຕົວເລືອກ --utc ດັ່ງຕໍ່ໄປນີ້.

$ journalctl --utc

ເພື່ອເບິ່ງລາຍການທັງ ໝົດ ນັບຕັ້ງແຕ່ມື້ແລະເວລາສະເພາະ, ເຊັ່ນ: ວັນທີ 15 ເດືອນມິຖຸນາ, 2017 ເວລາ 8:15, ພິມ ຄຳ ສັ່ງນີ້.

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

ເພື່ອເບິ່ງຂໍ້ຄວາມບັນທຶກທີ່ຜ່ານມາ (10 ໂດຍຄ່າເລີ່ມຕົ້ນ), ໃຫ້ໃຊ້ -n ທຸງດັ່ງຮູບຂ້າງລຸ່ມນີ້.

$ journalctl -n
$ journalctl -n 20 

ເພື່ອເບິ່ງພຽງແຕ່ຂໍ້ຄວາມຂອງ kernel, ຄ້າຍຄືກັບຜົນຜະລິດ ຄຳ ສັ່ງ dmesg, ທ່ານສາມາດໃຊ້ທຸງ -k .

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

ເພື່ອສາມາດເບິ່ງລາຍການວາລະສານທັງ ໝົດ ສຳ ລັບຫົວ ໜ່ວຍ ໃດ ໜຶ່ງ, ໃຫ້ໃຊ້ປຸ່ມ -u ດັ່ງຕໍ່ໄປນີ້.

$ journalctl -u apache2.service

ເພື່ອລົງສູນໃສ່ເກີບບູດປັດຈຸບັນ, ພິມ ຄຳ ສັ່ງນີ້.

$ journalctl -b -u apache2.service

ເພື່ອສະແດງບັນທຶກຈາກເກີບທີ່ຜ່ານມາ, ໃຊ້ນີ້.

$ journalctl -b -1 -u apache2.service

ຂ້າງລຸ່ມນີ້ແມ່ນບາງ ຄຳ ສັ່ງທີ່ມີປະໂຫຍດອື່ນໆ:

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

ເພື່ອເບິ່ງບັນທຶກທີ່ຜະລິດໂດຍຂັ້ນຕອນສະເພາະ, ໃຫ້ລະບຸວ່າມັນແມ່ນ PID ແບບນີ້.

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

ເພື່ອເບິ່ງບັນທຶກທີ່ສ້າງຂື້ນໂດຍຜູ້ໃຊ້ຫຼືກຸ່ມສະເພາະ, ໃຫ້ລະບຸວ່າມັນແມ່ນຊື່ຜູ້ໃຊ້ຫລື ID ຂອງກຸ່ມແບບນີ້.

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

ເພື່ອສະແດງບັນທຶກຂໍ້ມູນທັງ ໝົດ ທີ່ຜະລິດໂດຍແຟ້ມເອກະສານ (ອາດຈະເປັນການປະຕິບັດໄດ້), ເຊັ່ນວ່າ D-Bus executable ຫຼື bash executable, ພິມງ່າຍໆ.

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

ທ່ານຍັງສາມາດກັ່ນຕອງຜົນຜະລິດໂດຍອີງໃສ່ບູລິມະສິດຂໍ້ຄວາມຫລືຂອບເຂດບຸລິມະສິດໂດຍໃຊ້ -p ທຸງ. ຄຸນຄ່າທີ່ເປັນໄປໄດ້ແມ່ນ: 0 - ການສຸກເສີນ, 1 - ການແຈ້ງເຕືອນ, 2 - ການວິຈານ, 3 - ຜິດ, 4 - ຄຳ ເຕືອນ, 5 - ແຈ້ງການ, 6 - ຂໍ້ມູນ, 7 - ຂໍ້ບົກພ່ອງ):

$ journalctl -p err

ເພື່ອ ກຳ ນົດຂອບເຂດໃດ ໜຶ່ງ, ໃຫ້ໃຊ້ຮູບແບບຂ້າງລຸ່ມນີ້ (ເຕືອນເພື່ອເຕືອນ).

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

ທ່ານສາມາດເບິ່ງຂໍ້ມູນບັນທຶກການປະຕິບັດໄດ້ທີ່ພວກເຂົາ ກຳ ລັງຂຽນດ້ວຍຕົວເລືອກ -f (ຄ້າຍຄືກັບການເຮັດວຽກຂອງຫາງ -F).

$ journalctl -f

ຖ້າທ່ານຕ້ອງການຄວບຄຸມການຈັດຮູບແບບຜົນຜະລິດຂອງລາຍການວາລະສານ, ໃຫ້ຕື່ມທຸງ -o ແລະໃຊ້ຕົວເລືອກເຫຼົ່ານີ້: ແມວ, ສົ່ງອອກ, json, json-pretty, json-sse, ສັ້ນ, ສັ້ນ-iso, ສັ້ນ, monotonic ສັ້ນ, ຊັດເຈນແລະ verbose (ກວດເບິ່ງຄວາມຫມາຍຂອງທາງເລືອກໃນຫນ້າຜູ້ຊາຍ:

ຕົວເລືອກແມວສະແດງຂໍ້ຄວາມຕົວຈິງຂອງແຕ່ລະວາລະສານໂດຍບໍ່ມີຂໍ້ມູນໃດໆ (ຕາຕະລາງເວລາແລະອື່ນໆ).

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

ເພື່ອກວດເບິ່ງເອກະສານວາລະສານ ສຳ ລັບຄວາມສອດຄ່ອງພາຍໃນ, ໃຊ້ຕົວເລືອກ - ຢັ້ງຢືນ . ຖ້າທຸກຢ່າງດີ, ຜົນຜະລິດຄວນຊີ້ບອກ 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

ທ່ານຍັງສາມາດສະແດງການ ນຳ ໃຊ້ແຜ່ນດິຈິຕອລໃນປະຈຸບັນຂອງແຟ້ມວາລະສານທັງ ໝົດ ດ້ວຍຕົວເລືອກ - ນຳ ໃຊ້ - ໃຊ້ ມັນສະແດງຜົນລວມຂອງການ ນຳ ໃຊ້ແຜ່ນຂອງແຟ້ມເອກະສານທັງ ໝົດ ທີ່ເກັບໄວ້ແລະເຄື່ອນໄຫວ:

$ journalctl --disk-usage

ເພື່ອລຶບເອກະສານວາລະສານເກົ່າ (ເກັບໄວ້) ເຮັດວຽກຕາມ ຄຳ ສັ່ງຂ້າງລຸ່ມນີ້:

$ 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

ສຸດທ້າຍ, ທ່ານສາມາດແນະ ນຳ ວາລະສານໃຫ້ຫັນເອກະສານວາລະສານດ້ວຍຕົວເລືອກ --rotate . ຈົ່ງສັງເກດວ່າ ຄຳ ສັ່ງສະບັບນີ້ບໍ່ໄດ້ກັບມາຈົນກວ່າການ ດຳ ເນີນການ ໝູນ ວຽນສິ້ນສຸດລົງ:

$ sudo journalctl --rotate

ສຳ ລັບ ຄຳ ແນະ ນຳ ກ່ຽວກັບການ ນຳ ໃຊ້ແລະທາງເລືອກໃນຄວາມເລິກ, ເບິ່ງ ໜ້າ man journalctl ດັ່ງຕໍ່ໄປນີ້.

$ man journalctl

ຢ່າກວດເບິ່ງບາງບົດຂຽນທີ່ມີປະໂຫຍດ.

<

  • ການຄຸ້ມຄອງຂັ້ນຕອນແລະການບໍລິການເລີ່ມຕົ້ນຂອງລະບົບ (SysVinit, Systemd ແລະ Upstart)
  • Petiti - ເຄື່ອງມືການວິເຄາະບັນທຶກຂໍ້ມູນທີ່ເປີດຢູ່ ສຳ ລັບ Linux SysAdmins
  • ວິທີການຕັ້ງແລະຈັດການການ ໝູນ ວຽນການ ນຳ ໃຊ້ Logrotate ໃນ Linux
  • lnav - ເບິ່ງແລະວິເຄາະບັນທຶກ Apache ຈາກ Linux Terminal
  • ນັ້ນແມ່ນ ສຳ ລັບດຽວນີ້. ໃຊ້ ຄຳ ຕິຊົມຈາກທາງລຸ່ມເພື່ອຖາມ ຄຳ ຖາມໃດໆຫຼືເພີ່ມຄວາມຄິດຂອງທ່ານໃສ່ຫົວຂໍ້ນີ້.