Red Hat Training

A Red Hat training course is available for RHEL 8

第 10 章 使用日志文件进行故障排除

日志文件包含有关系统的信息,包括内核、服务和在该系统中运行的应用程序。这些信息可帮助故障排除问题或监控系统功能。Red Hat Enterprise Linux 中的日志记录系统基于内置 syslog 协议。特定的程序使用这个系统记录事件并将其整理到日志文件中,这些文件在审核操作系统和故障排除各种问题时非常有用。

10.1. 处理 syslog 信息的服务

以下两个服务处理 syslog 信息:

  • systemd-journald 守护进程
  • Rsyslog 服务

systemd-journald 守护进程从不同源收集信息并将其转发到 Rsyslog 以便进一步处理。systemd-journald 守护进程从以下源收集信息:

  • 内核
  • 引导过程的早期阶段
  • 启动并运行守护进程的标准和错误输出
  • Syslog

Rsyslog 服务根据类型和优先级对 syslog 信息排序,并将其写入 /var/log 目录中的文件。/var/log 目录会永久存储日志信息。

10.2. 存储 syslog 信息的子目录

/var/log 目录下的以下子目录存储了 syslog 信息。

  • /var/log/messages - 除以下外的所有 syslog 信息
  • /var/log/secure - 与安全性和验证相关的信息和错误
  • /var/log/maillog - 与邮件服务器相关的信息和错误
  • /var/log/cron - 与定期执行的任务相关的日志文件
  • /var/log/boot.log - 与系统启动相关的日志文件

10.3. 使用 Web 控制台检查日志文件

按照以下步骤使用 Web 控制台检查日志文件。

流程

  1. 登录到 Red Hat Enterprise Linux 8 web 控制台。
  2. Logs

图 10.1. 在 RHEL 8 web 控制台中检查日志文件

CS 查看日志 Web 控制台

10.4. 使用命令行查看日志

Journal 是 systemd 的一个组件,可帮助查看和管理日志文件。它解决了与传统日志记录相关的问题,并与系统的其余部分紧密集成,并支持各种日志记录技术和日志文件访问管理。

您可以使用 journalctl 命令使用命令行查看系统日志中的信息,例如:

$ journalctl -b | grep kvm
May 15 11:31:41 localhost.localdomain kernel: kvm-clock: Using msrs 4b564d01 and 4b564d00
May 15 11:31:41 localhost.localdomain kernel: kvm-clock: cpu 0, msr 76401001, primary cpu clock
...

表 10.1. 查看系统信息

命令描述

journalctl

显示所有收集的日志条目。

journalctl FILEPATH

显示与特定文件相关的日志。例如: journalctl /dev/sda 命令显示与 /dev/sda 文件系统相关的日志。

journalctl -b

显示当前引导的日志。

journalctl -k -b -1

显示当前引导的内核日志。

表 10.2. 查看特定服务的信息

命令描述

journalctl -b _SYSTEMD_UNIT=foo

过滤日志以查看与 "foo" systemd 服务匹配的日志。

journalctl -b _SYSTEMD_UNIT=foo _PID=number

合并匹配。例如:这个命令显示 systemd-units 的日志,它们与 foo 和 PID number 匹配。

journalctl -b _SYSTEMD_UNIT=foo _PID=number + _SYSTEMD_UNIT=foo1

分隔符 "+" 组合了逻辑 OR 中的两个表达式。例如,这个命令显示来自 foo 服务进程的所有信息 PID 以及来自 foo1 服务(来自其任意进程)的所有信息。

journalctl -b _SYSTEMD_UNIT=foo _SYSTEMD_UNIT=foo1

此命令显示与其中任何一个表达式匹配的所有条目,引用同一字段。此命令显示与 systemd-unit foo 或 systemd-unit foo1 匹配的日志。

表 10.3. 查看与特定引导相关的日志

命令描述

journalctl --list-boots

显示引导号码、ID 以及与引导相关的第一个和最后一个消息的时间戳列表。您可以使用下一命令中的 ID 查看详细信息。

journalctl --boot=ID _SYSTEMD_UNIT=foo

显示指定引导 ID 的信息。

10.5. 其它资源