[Linux]Logging
Logging
1 系统日志(System Logging)
系统中的服务、内核、守护进程等组件不断执行各种操作,这些操作的数据会被记录成日志保存在系统中,以便生成人类可读的事件记录。这类数据通常存储于/var
目录下,该目录用于存放诸如日志之类的变量数据。
syslog的服务负责将信息发送到系统日志记录器。
Syslog实际上由多个组件构成,其中一个重要的组成部分是运行名为syslogd(较新的Linux发行版使用rsyslogd)的守护进程。此进程等待事件消息的发生,并过滤出需要关注的消息。根据对不同消息的处理需求,它可能会将消息写入文件、显示在控制台上或忽略该消息。
但是并不是所有日志都在system logger中记录。许多应用程序会自行定义日志规则并生成独立的日志文件。然而,一般而言,日志格式应包括时间戳和事件详情。
以下是一个syslog日志行示例:
1 |
|
从上述示例可以看出,在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 |
|
上述配置中的每一行都包含一个选择器(左列)和一个动作(右列)。选择器决定了哪些类型的日志消息将被处理,而动作则指定了这些消息应被发送到哪里,如特定的日志文件、控制台等。值得注意的是,并非所有应用程序和服务都使用rsyslog管理其日志,因此若要详细了解具体应用的日志记录情况,需要查阅相应的配置。
为直观展示日志记录的实际操作,可以使用logger
命令手动发送一条日志信息:
1 |
|
随后检查/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 |
|
上述示例展示了在特定时间点上,某个用户可能尝试通过pkexec
命令进行操作,并且系统使用了PAM(可插拔认证模块)进行身份验证的过程。
6 日志文件管理
日志文件生成大量数据,并将其存储在硬盘上。然而,这种方法存在一些问题。大多数情况下,我们仅需要查看较新的日志,同时希望高效管理磁盘空间。
logrotate
logrotate
提供了一站式的日志管理解决方案。它通过配置文件允许用户指定需保留的日志数量及类型、如何压缩日志以节省空间等。通常,logrotate
每天通过cron作业运行一次,其配置文件位于/etc/logrotate.d
目录下。
- 配置与功能:利用
logrotate
的配置文件,可以灵活设定日志的轮换策略,包括轮换周期、保存的历史日志数量以及是否对旧日志进行压缩处理。 - 自动化执行:该工具一般由cron定时任务每日调度执行,确保日志管理的自动化和高效性。