跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / 系统分析和微调指南 / 系统监视 / 分析和管理系统日志文件
适用范围 SUSE Linux Enterprise Server 15 SP2

3 分析和管理系统日志文件

系统日志文件分析是分析系统时最重要的任务之一。事实上,在对系统进行维护或查错时,第一件事就是要查看系统日志文件。SUSE Linux Enterprise Server 会自动详细记录系统上发生的几乎一切事件。自从过渡到 systemd 之后,内核消息以及已在 systemd 中注册的系统服务的消息都将记录在 systemd 日记中(请参见第 17 章 “journalctl:查询 systemd 日记)。其他日志文件(主要是系统应用程序的日志文件)将以纯文本格式写入,并可使用编辑器或分页器轻松阅读。还可以使用脚本来分析这些文件。这可让您过滤其内容。

3.1 /var/log/ 中的系统日志文件

系统日志文件始终位于 /var/log 目录下。以下列表提供了在完成默认安装后 SUSE Linux Enterprise Server 中所有系统日志文件的概述。根据您的安装范围,/var/log 还会包含此处未列出的其他服务和应用程序中的日志文件。下面所述的某些文件和目录以占位符表示,仅当安装相应的应用程序时才会使用它们。大多数日志文件仅对 root 用户可见。

apparmor/

AppArmor 日志文件。有关 AppArmor 的详细信息,请参见第 IV 部分 “通过 AppArmor 限制特权”

audit/

来自审计框架的日志。有关详细信息,请参见第 VI 部分 “Linux 审计框架

ConsoleKit/

ConsoleKit 守护程序(用于跟踪哪些用户已登录,以及他们如何与计算机交互的守护程序)的日志。

cups/

通用 Unix 打印系统 (cups) 的访问和错误日志。

firewall

防火墙日志。

gdm/

来自 GNOME 显示管理器的日志文件。

krb5/

来自 Kerberos 网络身份验证系统的日志文件。

lastlog

包含每个用户上次登录相关信息的数据库。可使用命令 lastlog 进行查看。有关详细信息,请参见 man 8 lastlog

localmessages

某些引导脚本的日志消息,例如,DHCP 客户端的日志。

mail*

邮件服务器(postfixsendmail)日志。

messages

这是所有内核和系统日志消息的默认保存位置,出现问题时应首先查看该位置(以及 /var/log/warn)。

NetworkManager

NetworkManager 日志文件。

news/

来自新闻服务器的日志消息。

chrony/

来自网络时间协议守护程序 (chrony) 的日志。

pk_backend_zypp*

PackageKit(使用 libzypp 后端)日志文件。

samba/

来自 Samba、Windows SMB/CIFS 文件服务器的日志文件。

warn

所有系统警告和错误的日志。出现问题时,应首先查看此位置(以及 systemd 日记的输出)。

wtmp

所有登录/注销活动和远程连接的数据库。可使用命令 last 进行查看。有关详细信息,请参见 man 1 last

Xorg.0.log

X.Org 启动日志文件。如果在启动 X.Org 时出现问题,请参考此文件。来自先前 X.Org 启动的日志文件副本的文件编号为 Xorg.? .log。

YaST2/

所有 YaST 日志文件。

zypp/

libzypp 日志文件。可参考这些文件获取软件包安装历史。

zypper.log

来自命令行安装程序 zypper 的日志。

3.2 查看和分析日志文件

要查看日志文件,可以使用任何文本编辑器。此外,还可以使用一个简单的 YaST 模块来查看 YaST 控制中心的杂项 › 系统日志下提供的系统日志。

要在文本控制台中查看日志文件,请使用命令 lessmore。使用 headtail 可查看日志文件的开头和结尾。要实时查看日志文件的追加项,请使用 tail -f。有关如何使用这些工具的信息,请查看它们的手册页。

要在日志文件中搜索字符串或正则表达式,请使用 grepawk 可用于分析和重新写入日志文件。

3.3 使用 logrotate 管理日志文件

/var/log 下的日志文件每天增长,很快就会变得非常庞大。logrotate 工具可帮助您管理日志文件及其增长。使用此工具可以自动轮换、去除、压缩和通过邮件发送日志文件。可以定期(每日、每周或每月)或者在超过特定大小时处理日志文件。

通常由 systemd 每日运行 logrotate,因此只会每日修改一次日志文件。但存在一些例外情况:因超过大小限制而修改日志文件时、如果一天内多次运行 logrotate,或者如果启用 --force。使用 /var/lib/misc/logrotate.status 可以了解上次轮换特定文件的时间。

logrotate 的主要配置文件是 /etc/logrotate.conf。生成日志文件的系统软件包和程序(例如 apache2)将其自身的配置文件放在 /etc/logrotate.d/ 目录中。通过 /etc/logrotate.conf 添加 /etc/logrotate.d/ 的内容。

例 3.1︰ /etc/logrotate.conf 的示例

# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# use date as a suffix of the rotated file
dateext

# uncomment this if you want your log files compressed
#compress

# comment these to switch compression to use gzip or another
# compression scheme
compresscmd /usr/bin/bzip2
uncompresscmd /usr/bin/bunzip2

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
重要
重要:避免权限冲突

create 选项会关注 /etc/permissions* 中所指定文件的模式和所有权。如果您修改这些设置,请确保不会引发冲突。

3.4 使用 logwatch 监视日志文件

logwatch 是一个可自定义且可插入的日志监视脚本。它可以分析系统日志、提取重要信息,并以直观易懂的方式显示这些信息。要使用 logwatch,请安装 logwatch 软件包。

可在命令行上使用 logwatch 来生成动态报告,或通过 cron 来定期创建自定义报告。报告可在屏幕上列显、保存到文件,或通过邮件发送到指定的地址。通过 cron 自动生成报告时,后一种做法特别有用。

在命令行上,可以告知 logwatch 要针对哪个服务和时间范围生成报告,以及包含信息的详细程度:

# Detailed report on all kernel messages from yesterday
logwatch --service kernel --detail High --range Yesterday --print

# Low detail report on all sshd events recorded (incl. archived logs)
logwatch --service sshd --detail Low --range All --archives --print

# Mail a report on all smartd messages from May 5th to May 7th to root@localhost
logwatch --service smartd --range 'between 5/5/2005 and 5/7/2005' \
--mailto root@localhost --print

--range 选项的语法比较复杂 — 有关细节,请参见 logwatch --range help。使用以下命令获取可查询的所有服务的列表:

tux > ls /usr/share/logwatch/default.conf/services/ | sed 's/\.conf//g'

logwatch 可自定义程度很高。但通常默认配置便足以满足需求。默认配置文件位于 /usr/share/logwatch/default.conf/ 下。切勿更改这些文件,因为下一次更新时会再次重写它们。而自定义配置会放入 /etc/logwatch/conf/(但您可以使用默认配置文件作为模板)。/usr/share/doc/packages/logwatch/HOWTO-Customize-LogWatch 中提供了有关自定义 logwatch 的详细操作指南。存在以下配置文件:

logwatch.conf

主要配置文件。默认版本带有大量注释。可在命令行重写每个配置选项。

ignore.conf

过滤掉 logwatch 应全局忽略的所有行。

services/*.conf

该服务目录包含了可为其生成报告的每个服务的配置文件。

logfiles/*.conf

有关应分析每个服务的哪些日志文件的规范。

3.5 使用 logger 创建系统日志项

logger 是用于在系统日志中创建日志项的工具。它提供了 rsyslogd 系统日志模块的外壳命令接口。例如,下面一行命令会在 /var/log/messages 中或直接在日记中(如果未运行日志记录工具)输出其消息:

tux > logger -t Test "This message comes from $USER"

根据当前用户和主机名,日志将包含如下一行:

Sep 28 13:09:31 venus Test: This message comes from tux