Centos8 中如何使用journalctl分析日志

少年意气强不羁,虎胁插翼白日飞。这篇文章主要讲述Centos8 中如何使用journalctl分析日志相关的知识,希望能为你提供帮助。


systemd 是大多数主要  ??Linux??  发行版中的默认系统管理器,它带有一个名为“journald”的日志守护程序。
??systemd???从系统、内核和各种服务或守护进程多个来源收集日志,并通过??journald??提供集中管理的解决方案。
什么是journald?
journald是systemd的守护进程,它从系统、内核和各种服务或守护进程多个来源收集日志,并以二进制格式存储日志,以便于操作。
所有这些日志事件都由journald处理,它提供了一种集中处理日志的方法,而不管消息来自何处。
什么是journalctl?
journalctl是一个??命令??行工具,用于查看由journald收集的日志。
日志有很好的索引和结构,允许系统管理员根据各种参数轻松地分析和操作日志,例如,根据时间、引导顺序、特定服务、严重性等过滤日志。
1) 如何使日志长期保存在系统中?
默认情况下,??journal???日志在大多数 Linux 发行版中是启用的,但它将日志数据存储在??/run/log/journal/???中,重启时会被删除。如果要使日志永久保存,请执行以下步骤,这些步骤将自动创建??/var/log/journal/??目录。
以 root 用户身份打开??/etc/systemd/journald.conf???文件并取消注释“Storage=auto”的行并将其更改为“Storage=persistent”。或者,您可以使用 sed  ??命令??替换文件中的匹配字符串。
[root@server1 ~]# sed -i /Storage/ c\\Storage=persistent /etc/systemd/journald.conf


重启 systemd-journald 服务:
[root@server1 ~]# systemctl restart systemd-journald

修改??/var/log/journal??权限:
[root@server1 ~]# chown -R root:systemd-journal /var/log/journal

下面可以从目录中看到日志了。

2) journalctl 常用的选项
在使用 Journalctl 工具之前,可以了解一些常用的选项:
  • -f  : 实时显示最近的10条日志。
  • -e: 跳转到日志末尾以显示最新事件。
  • -r  : 按时间倒序打印日志消息
  • -k: 只显示内核日志。
  • -u: 只显示指定systemd Unit的消息。
  • -b: 显示来自特定引导的消息,如果不包括特定引导会话,则显示当前引导消息。
  • --list-boots: 显示引导编号(相对于当前引导)、它的id以及与引导有关的第一个和最后一个消息的时间戳。
  • –utc  : 以UTC时间表示。
  • -p, --priority=: 按消息优先级过滤输出。
  • -S, --since=: 根据开始时间过滤日志
  • -U, --until=: 根据结束时间过滤日志
  • --disk-usage: 显示所有日志文件的当前磁盘使用情况。
3)如何使用journalctl读取日志
3.a) 使用 journalctl 命令查看基本日志
当journalctl不带选项是,它会显示日志的完整内容,首先列出最旧的记录。
它在后端使用??less??命令来显示日志。
[root@server1 ~]# journalctl


3.b) 以相反的顺序显示日志
上面的输出按时间顺序显示日志。如果想要将最新的日志放在最前面,需要添加??-r??选项。
[root@server1 ~]# journalctl -r


3.c) 显示指定行数的日志
可以使用??-n??选项仅显示日志中指定行数的日志,如下所示:
[root@server1 ~]# journalctl -n 20


3.d) 实时查看日志
可以使用??-f??选项查看实时日志,如下所示。这在对某些问题进行故障排除时很有用。
[root@server1 ~]# journalctl -f


3.e) 只显示内核日志
过滤器可以根据你的需要使用。要仅显示内核日志,可以使用??-k???选项。这相当于字段匹配??_TRANSPORT=kernel??。
[root@server1 ~]# journalctl -k
或者
[root@server1 ~]# journalctl _TRANSPORT=kernel


3.f) 过滤出系统引导日志
每次引导系统时,都会在日志中创建一个新的引导条目。要列出所有可用的引导,运行以下命令:
[root@server1 ~]# journalctl --list-boots
-1 5d845cc6c67746bdabd9b9a91c0d86ee Tue 2021-06-08 14:58:47 CST—Fri 2021-06-11 08:32:36 CST
0 5690a1c73db146bb8ceeaf3c8b1086f5 Wed 2021-06-16 15:40:42 CST—Wed 2021-06-16 15:41:20 CST


系统引导日志以一个数字作为前缀,该数字从0开始。0 指的是当前启动。引导会话“-1”是上次引导的会话,依此类推。使用下面命令显示本次系统引导的日志记录:
[root@server1 ~]# journalctl -b 0


查看上一次系统引导的记录,如下操作:
[root@server1 ~]# journalctl -b -1


3.g) 基于时间间隔的过滤
可以根据时间间隔过滤日志。多个参数可以与时间过滤器一起使用,如下所示。要使用时间过滤器,请使用“-S 或 --since”和“-U 或 --until”命令行开关。
要过滤从昨天到目前的日志,请运行以下命令:
[root@server1 ~]# journalctl -S yesterday

仅过滤今天的日志,请运行以下命令:
[root@server1 ~]# journalctl -S today
或者
[root@server1 ~]# journalctl -S 00:00

如果仅过滤昨天的日志,不包括今天的,请运行以下命令:
[root@server1 ~]# journalctl -S yesterday --until 00:00

要过滤自 3 月 12 日以来的日志,请运行以下命令:
[root@server1 ~]# journalctl -S 2021-03-12


如要使用日期和时间过滤日志,请运行以下命令。
注意:日期和时间的使用格式:??year-month-day???  ??hour:minute:second??
[root@server1 ~]# journalctl -S "2021-06-01 20:00:00" -U "2021-06-16"

要过滤过去一小时的消息,请使用以下命令:
[root@server1 ~]# journalctl -S -1h

3.h) 按优先级过滤
过滤可以应用于消息优先级,这在你想要过滤特定消息(如“Warn”或“Error”等)时非常有用。
下面列出了所有优先级:
Priority
Code
0
emerg
1
alert
2
crit
3
err
4
warning
5
notice
6
info
7
debug
[root@server1 ~]# journalctl -p 3 -b
或者
[root@server1 ~]# journalctl -p err -b


4) 基于字段的过滤
journal日志可以按特定字段过滤。要匹配的字段的语法是??FIELD_NAME=MATCHED_VALUE???,例如??SYSTEMD_UNIT=httpd.service??。此外,可以在单个查询中指定多个匹配项,以更方便的方式过滤输出消息。
4.a) 按Unit过滤
要显示由指定服务生成的消息,请使用下面给出的命令。同样可以过滤任何服务消息。
[root@server1 ~]# journalctl -u sshd.service
或者
[root@server1 ~]# journalctl _SYSTEMD_UNIT=sshd.service


4.b) 按设备路径过滤
要过滤与特定设备相关的消息,请运行以下命令:
[root@server1 ~]# journalctl /dev/sda


5) 检查日志文件的磁盘占用情况
当你为journal日志启用持久存储时,它最多使用??/var/log/journal??所在文件系统容量的“10%”。
当您为日志日志启用持久存储时,它最多使用“/var/log/journal”所在文件系统的“10%”。
[root@server1 ~]# journalctl --disk-usage
Archived and active journals take up 16.0M in the file system.


总结
在本文中,展示了什么是journal,以及如何使用journalctl命令根据各种参数筛选日志。
TRANSLATE withx
English
??Arabic??
??Hebrew??
??Polish??
??Bulgarian??
??Hindi??
??Portuguese??
??Catalan??
??Hmong Daw??
??Romanian??
??Chinese Simplified??
??Hungarian??
??Russian??
??Chinese Traditional??
【Centos8 中如何使用journalctl分析日志】??Indonesian??
??Slovak??
??Czech??
??Italian??
??Slovenian??
??Danish??
??Japanese??
??Spanish??
??Dutch??
??Klingon??
??Swedish??
??English??
??Korean??
??Thai??
??Estonian??
??Latvian??
??Turkish??
??Finnish??
??Lithuanian??
??Ukrainian??
??French??
??Malay??
??Urdu??
??German??
??Maltese??
??Vietnamese??
??Greek??
??Norwegian??
??Welsh??
??Haitian Creole??
??Persian??






TRANSLATE with
COPY THE URL BELOW


Back
EMBED THE SNIPPET BELOW IN YOUR SITE


Enable collaborative features and customize widget: ??Bing Webmaster Portal??
Back







    推荐阅读