第13章:分析、储存与存取系统日志介绍(二)

前言

继上次介绍了系统日志与相关的介绍後,接下来介绍该如何使用journalctl将日志档案永久的储存下来。

持久储存journal

系统的journal是有一个背景服务在开机的时候会自动启动,换句话说,journal在重新开机之後之前的日志档案就会不见,若要保留之前的日志则上述的这个预设设定上会有问题,因此若要把日志档案给保存下来的话,则需要修改/etc/systemd/journald.conf档案,并找到有关於Storage之设定,相关寻找此设定的指令方式如下:

[rockylinux@workstation ~]$ cat /etc/systemd/journald.conf | grep auto
#Storage=auto

从上述的指令执行与输出的讯息可以得知,预设是不会将任何的日志档案给储存下来的,若要储存的话,则需要将此行设定的注解拿掉,并进行相关设定值的设定:有关於储存设定的方式如下:

  • persistent:将journal相关的档案储存到/var/log/journal目录底下,当主机重新启动之後仍会存在,若是此目录不存在的话,systemd-journald则会自动去建立这个目录。
  • volatile,将相关journal档案储存到/run/log/journal目录底下,当主机启动的时候,相关的档案就会放到上述的目录,由於这个目录相关档案都是在作业系统执行期存放在记忆体的,所以当主机重新启动之後,里面这些资料就会不见,也就是挥发掉的意思,意思就是当主机重新启动的时候,不要将旧的journal相关档案给保留下来。
  • auto:这个模式是让rsyslog决定使用persistent或是vilatile模式的储存,若/var/log/journal档案存在的话,
    则rsyslog则会执行persistent模式将相关的日志档案都储存下来;反之,则使用violatile模式在每次主机重新开机都将不保留先前的日志档案。

joirnal所存取的日志档案为一个日志资料库,而这个日志资料库是一个二进制的档案,即binart档,可以使用file指令来验证这件事情,相关的指令执行输出的讯息如下:

[rockylinux@workstation ~]$ ls -al /run/log/journal/
total 0
drwxr-sr-x. 3 root systemd-journal 60 Oct  4 20:51 .
drwxr-xr-x. 3 root root            60 Oct  4 20:51 ..
drwxr-s---+ 2 root systemd-journal 60 Oct  4 20:51 efa711973c694923969a64fd32220e6d
[rockylinux@workstation ~]$
[rockylinux@workstation ~]$ file -i /run/log/journal/
/run/log/journal/: inode/directory; charset=binary

设定持久性的journal日志档案储存

为了要设定成可以持久性的储存journal相关的日志档案,则需要先修改/etc/systemd/journald.conf之设定档案,可以使用vim指令进行设定档案的编辑,相关执行指令如下:

[rockylinux@workstation ~]$ sudo vim /etc/systemd/journald.conf

接着在上述的设定档中找到下列这一行:

......
[Journal]
#Storage=auto

大概在第15行之位置,接着将此行设定改成:

Storage=persistent

接着存档离开vim,之後将systemd-journald之背景服务重新启动,相关的指令执行与输出的讯息如下:

[rockylinux@workstation ~]$ sudo systemctl restart systemd-journald
[rockylinux@workstation ~]$

接着,就可以看到相关的日志资料就移到下列的路径了:

[rockylinux@workstation ~]$ ls /var/log/journal/
efa711973c694923969a64fd32220e6d
[rockylinux@workstation ~]$

若要看一直到现在产生的日志有哪些的话,可以使用-b参数并加上数字id值查看编号第几个启动的日志,相关指令执行所输出的讯息如下:

[rockylinux@workstation ~]$ sudo journalctl -b 1
[sudo] password for rockylinux:
-- Logs begin at Mon 2021-10-04 20:51:42 CST, end at Mon 2021-10-04 23:17:45 CST. --
Oct 04 20:51:42 workstation kernel: Linux version 4.18.0-305.19.1.el8_4.x86_64 (mockbuild@ord1-prod-x86buil>
Oct 04 20:51:42 workstation kernel: Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-305.19.1.el8_4.x86>
Oct 04 20:51:42 workstation kernel: x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
Oct 04 20:51:42 workstation kernel: x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
Oct 04 20:51:42 workstation kernel: x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
Oct 04 20:51:42 workstation kernel: x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
Oct 04 20:51:42 workstation kernel: x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using >
Oct 04 20:51:42 workstation kernel: BIOS-provided physical RAM map:
Oct 04 20:51:42 workstation kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
Oct 04 20:51:42 workstation kernel: BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
......

从上面的执行指令输出的讯息可以得知,设定1表示显示启动编号(boot id)是1的日志,若不加任何参数的话,则观看确切boot id的日志。

课後练习

  • 请开启VirtualBox并启动「workstation」虚拟机,并使用rockylinux使用登入到桌面环境并开启终端机。
  • 将journal日志储存方式改成persistent。
  • 验证并确定上述设定有修改成功。
  • 将journal日志储存方式改成volatile。
  • 验证并确定上述设定有修改成功。

<<:  Day 20 - WooCommerce: 定义信用卡付款闸道

>>:  样式属性

我们的基因体时代-AI, Data和生物资讯 Day29-大数据追踪COVID病毒之演进

上一篇我们的基因体时代-AI, Data和生物资讯 Day28-COVID大数据:资料哪里来 开始进...

DAY22 - [React] 资料夹结构概述

今日文章目录 资料夹结构概述 参考资料 今天写一点我对 React资料结构的基础了解,在写Reac...

Day 26 - Clean Code 迈向更好读、好维护的程序

前言 今天的主题会参考这本非常有名的书 Clean Code。 写程序到最後,除了最基本的,商业功能...

铁人赛28天 VScode Live Sass设定

这几天确定真的都没梗,极度没有营养的内容,所以今天把之前liveSass设定贴上来做为用记录,不过现...

DAY30 - 切版的下一步

终於来到最後一天了!真的很怕最後一天出什麽意外啊~~ (突然昏睡24小时,今天就过了之类的 ? ) ...