中关村在线

软件

Linux日志分析入门

Linux系统具备高度灵活且强大的日志机制,能够记录几乎全部操作行为,并支持便捷地查询和提取所需信息。

1、 多数Linux发行版默认采用syslog作为日志守护进程,其程序通常位于/etc/syslog或/etc/syslogd,主配置文件为/etc/syslog.conf,各类需要记录日志的应用均可通过向syslog发送消息来实现日志输出。然而,从Fedora、Ubuntu以及RHEL6和CentOS6及以上版本开始,系统已逐步转向使用rsyslog作为默认日志服务。rsyslog是在传统syslog基础上发展而来的增强型日志管理工具,支持多线程处理,具备更高的性能与更强的功能扩展能力,能够更高效地处理大量日志信息,同时提供更灵活的过滤机制和更丰富的输出选项,满足现代系统对日志管理的更高要求。

2、 Linux系统内核及各类程序在运行过程中会产生错误、警告及其他提示信息,这些信息有助于管理员掌握系统运行状况,因此需记录到日志文件中。负责这一记录任务的程序是syslog。它能根据日志的类型和优先级别,将信息分类存储至不同的日志文件,便于后续查看与管理,有效提升系统监控和故障排查效率。

3、 为便于查看,可将内核信息单独分离,存入独立日志文件。通常情况下,这些日志文件默认存储在/var/log目录中,与其他系统日志分开管理。

4、 常见日志类型并非所有Linux发行版都会包含。

5、 日志级别常见类型

6、 系统应用通常在/var/log目录或其子目录中生成日志文件。

7、 /etc/syslog.conf(或rsyslog.conf)是syslog服务的配置文件,用于设定不同类型和优先级的日志信息应记录到哪个位置。其典型格式包含日志来源、优先级及对应的操作动作,通过规则定义实现日志的定向存储与管理。

8、 第一列是日志类型与优先级的组合,每种组合称为一个选择器;第二列指定日志的存储位置,如文件、服务器或终端。syslog进程依据选择器决定日志的处理方式。配置文件用于定义这些规则,指导日志的输出目标与行为,确保系统消息按需记录和传输。

9、 日志类型与优先级之间用点号(.)连接,如kern.debug表示内核发出的调试级别日志。其中,kern.debug的优先级高于单纯的debug。星号(*)代表全部,例如*.debug指所有类型的调试信息,kern.*则涵盖内核产生的所有日志。多个日志类型可用逗号(,)隔开,不同选择器之间以分号(;)分隔,实现灵活的日志过滤与分类处理,便于系统管理员精准定位和管理各类日志消息。

10、 日志操作包含查看与修改。

11、 将日志信息输出至指定文件,如 /var/log/maillog,或直接发送到终端设备如 /dev/console。可将告警消息发送给一个或多个用户,多个收件人之间使用逗号隔开,例如 root 或 amrood。支持通过管道机制将日志数据传递给自定义程序处理,需确保程序命令置于管道符号|之后。此外,还可将日志转发至远程主机的 syslog 服务进程,此时需在配置文件 /etc/syslog.conf 中对应条目的末尾指定以@符号开头的目标主机地址,例如 @see.xidian.edu.cn,实现集中式日志管理与跨主机记录。

12、 logger是Shell中的一个命令,可用于调用syslog日志系统,支持从命令行向系统日志文件直接写入指定信息,便于日志记录与调试操作。

13、 logger命令的使用格式如下:

14、 使用 -f 参数可将指定文件内容作为日志输入进行处理。

15、 每行输出包含 logger 进程的 ID 信息。

16、 通过 -p 指定优先级,格式为 facility.priority,若未设置则默认为 user.notice。该参数用于定义消息的设施类别与严重程度,确保日志正确分类和处理,适用于系统日志记录场景。

17、 用指定标签为每条记录添加标记。

18、 日志内容需以空格分隔多条记录;若未指定内容且未使用-f参数指定文件,则默认从标准输入读取日志信息。

19、 日志转储,又称日志回卷或日志轮转,是系统维护中常见的操作。由于Linux系统中的日志文件增长迅速,若不加以管理,极易占用大量磁盘空间。当单个日志文件达到设定大小时,便需将其分割并归档,以避免文件过大影响系统性能和存储效率。系统默认的syslog服务仅负责接收和写入日志,不具备自动管理功能,因此日志文件可能持续膨胀,特别是在高流量的Web服务器上,日志常常迅速突破1GB,给后续查询和分析带来不便。为解决这一问题,大多数Linux发行版配备了专门的日志管理工具,如logrotate或newsyslog。其中,logrotate功能强大,不仅能按大小或时间周期自动分割日志,还可对旧日志进行压缩,节省存储空间。此外,它支持将关键日志信息发送至指定邮箱,便于系统管理员及时掌握系统运行状态,提升运维效率与响应速度。

20、 例如,设定当邮件日志 /var/log/maillog 超过1GB时进行转储,并每周执行一次。此后每间隔一周,logrotate 进程便会检查该文件的大小,判断是否需要执行归档和清理操作,确保日志不会占用过多磁盘空间。

21、 若未超1G,则不做处理。

22、 当日志文件大小处于2GB至3GB区间时,系统将生成新的归档文件/var/log/maillog.2,同时把原有/var/log/maillog.1的内容迁移至该新文件中,并将当前活动日志/var/log/maillog的数据转移至/var/log/maillog.1。通过这一轮转机制,确保正在写入的主日志文件始终控制在1GB以内,避免单个日志文件过大,从而保障系统日志管理的稳定性与效率。

23、 每次转存都会生成一个新文件(若文件不存在),文件名在原日志名称后添加递增数字或当前日期作为后缀,确保当前及归档的日志文件大小均不超过设定限制。

24、 logrotate 的主配置文件位于 /etc/logrotate.conf,而 /etc/logrotate.d 目录用于存放额外的配置文件,作为主配置的补充。这样设计是为了避免主配置文件过于庞大,便于管理和维护各个服务的日志轮转设置,提升配置的清晰度与可维护性。

25、 include 指令允许系统管理员将多个独立的配置文件整合到一个主配置文件中,其作用类似于C语言中的 include,能够把其他文件的内容嵌入当前文件。这一功能在实际应用中非常实用。例如,许多应用程序会将其日志轮转的配置文件放置在 /etc/logrotate.d 目录下,这些单独的配置文件可以覆盖或补充主配置文件 /etc/logrotate.conf 中的设置。当某个配置项未在特定文件中明确定义时,系统将自动沿用主配置文件中的默认值。因此,最佳实践是将 /etc/logrotate.conf 保留为全局默认配置,而由第三方软件或服务在其子目录 /etc/logrotate.d 中创建独立的配置文件,以实现灵活且模块化的管理。这样不仅提高了配置的可维护性,也避免了对主配置文件的频繁修改。此外,logrotate 不仅可通过配置文件自动运行,还可作为命令行工具直接调用,便于手动触发日志轮转或调试配置,增强了系统的灵活性与可控性。

展开全文
人赞过该文
内容纠错

相关电商优惠

评论

更多评论
还没有人评论~ 快来抢沙发吧~

读过此文的还读过

点击加载更多

内容相关产品

说点什么吧~ 0

发评论,赚金豆

收藏 0 分享
首页查报价问答论坛下载手机笔记本游戏硬件数码影音家用电器办公打印 更多

更多频道

频道导航
辅助工具