[Linux]Logging

Logging

1 系统日志(System Logging)

系统中的服务、内核、守护进程等组件不断执行各种操作,这些操作的数据会被记录成日志保存在系统中,以便生成人类可读的事件记录。这类数据通常存储于/var目录下,该目录用于存放诸如日志之类的变量数据。

syslog的服务负责将信息发送到系统日志记录器。

Syslog实际上由多个组件构成,其中一个重要的组成部分是运行名为syslogd(较新的Linux发行版使用rsyslogd)的守护进程。此进程等待事件消息的发生,并过滤出需要关注的消息。根据对不同消息的处理需求,它可能会将消息写入文件、显示在控制台上或忽略该消息。

但是并不是所有日志都在system logger中记录。许多应用程序会自行定义日志规则并生成独立的日志文件。然而,一般而言,日志格式应包括时间戳和事件详情。

以下是一个syslog日志行示例:

1
2
3
pete@icebox:~$ less /var/log/syslog

Jan 27 07:41:32 icebox anacron[4650]: Job `cron.weekly' started

从上述示例可以看出,在1月27日07:41:32,cron服务启动了cron.weekly任务。可以通过查看/var/log/syslog文件来浏览syslog收集的所有事件消息。

2 syslog

syslog服务管理,并且发送日志到系统日志中。Rsyslog服务是syslog的高级版本,用于管理和发送日志到系统日志记录器。大多数Linux发行版现在都采用这一新版。通过/var/log/syslog文件可以查看由syslog服务收集的所有非认证相关的日志信息。

为了了解系统日志记录器维护哪些文件,可以通过查看/etc/rsyslog.d/目录下的配置文件来获取详细信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
pete@icebox:~$ less /etc/rsyslog.d/50-default.conf 

# 首先是一些标准的日志文件。按功能记录日志。

#

auth,authpriv.* /var/log/auth.log

*.*;auth,authpriv.none -/var/log/syslog

#cron.* /var/log/cron.log

#daemon.* -/var/log/daemon.log

kern.* -/var/log/kern.log

#lpr.* -/var/log/lpr.log

mail.* -/var/log/mail.log

#user.* -/var/log/user.log

上述配置中的每一行都包含一个选择器(左列)和一个动作(右列)。选择器决定了哪些类型的日志消息将被处理,而动作则指定了这些消息应被发送到哪里,如特定的日志文件、控制台等。值得注意的是,并非所有应用程序和服务都使用rsyslog管理其日志,因此若要详细了解具体应用的日志记录情况,需要查阅相应的配置。

为直观展示日志记录的实际操作,可以使用logger命令手动发送一条日志信息:

1
logger -s Hello

随后检查/var/log/syslog文件,在日志中找到这条新添加的记录。

3 通用日志(General Logging)

在系统中,可以查看许多日志文件,其中许多重要的日志位于/var/log目录下。这里主要讨论两个比较重要的。

有两个通用的日志文件可以快速了解系统的运行状态:

  • /var/log/messages

该日志文件包含了所有非关键及非调试消息,包括启动过程中(dmesg)、认证(auth)、定时任务(cron)、守护进程等记录的信息。这对于初步了解系统的运行状况非常有用。

  • /var/log/syslog

此日志文件记录了除认证信息外的所有内容,对于调试系统错误极为有用。

这两个日志文件在解决系统问题时应已足够。然而,如果需要针对特定组件进行日志分析,也存在相应的独立日志文件供查阅。

4 Kernel Logging

/var/log/dmesg

系统在启动时会记录有关内核环缓冲区的信息,这些信息包括硬件驱动、内核状态以及启动过程中的其他重要数据。该日志文件位于/var/log/dmesg,并在每次启动时重置。但在遇到启动问题或硬件问题时,dmesg日志是查找线索的最佳位置。此外,也可以直接使用dmesg命令查看此日志。

/var/log/kern.log

另一个用于查看内核信息的日志文件是/var/log/kern.log,它记录了系统上的内核信息和事件,并且包含了dmesg的输出。

5 Authentication Logging

身份验证日志对于排查登录问题极为有用,它可以帮助我们了解用户登录及所使用的认证方法等详细信息。

/var/log/auth.log

该日志文件包含了系统的授权记录,例如用户的登录活动以及采用的认证方式。通过分析/var/log/auth.log,可以有效地监控和解决与身份验证相关的各种问题。

示例片段:

1
Jan 31 10:37:50 icebox pkexec: pam_unix(polkit-1:session): session opened for user root by (uid=1000)

上述示例展示了在特定时间点上,某个用户可能尝试通过pkexec命令进行操作,并且系统使用了PAM(可插拔认证模块)进行身份验证的过程。

6 日志文件管理

日志文件生成大量数据,并将其存储在硬盘上。然而,这种方法存在一些问题。大多数情况下,我们仅需要查看较新的日志,同时希望高效管理磁盘空间。

logrotate

logrotate提供了一站式的日志管理解决方案。它通过配置文件允许用户指定需保留的日志数量及类型、如何压缩日志以节省空间等。通常,logrotate每天通过cron作业运行一次,其配置文件位于/etc/logrotate.d目录下。

  • 配置与功能:利用logrotate的配置文件,可以灵活设定日志的轮换策略,包括轮换周期、保存的历史日志数量以及是否对旧日志进行压缩处理。
  • 自动化执行:该工具一般由cron定时任务每日调度执行,确保日志管理的自动化和高效性。

[Linux]Logging
https://erlsrnby04.github.io/2025/03/22/Linux-Logging/
作者
ErlsrnBy04
发布于
2025年3月22日
许可协议