日志记录和管理
  kIM7GUNpnV3x 2023年11月13日 22 0

一:概述

  当我们的系统出现问题时,常常需要检查日志文件中的内容来判断系统的运行状况。日志文件中记录了非常多的重要信息,比如Linux系统内和程序会产生的各种警告信息、错误信息和提示信息,这些信息对系统管理员分析系统的运行状况很有用。日志文件中的信息量非常大,如果不借助任何分析工具单凭肉眼观察判断是非常困难的,所以需要学会分析日志文件。

二:识别日志文件

日志文件就是记录系统和应用程序的运行状态以及发生的各种其他事件文件。日志文件的名称和位置取决于Linux系统的发行版本,应用程序类型和设置、检查内容的方法取决于日志文件的类型。

日志文件的类型有以下两种格式:

  1. 文字格式:可以使用cat、less等命令直接查看的日志文件。
  2. 二进制格式:可以使用专有命令查看或者确认二进制格式的日志文件。

CentOS中的主要日志文件如下表所示:

文件名称

说明

/var/run/utmp

存储当前登录到系统的用户信息(二进制格式)

/var/log/wtmp

使用last命令存储登录的用户、使用时间和系统重启信息(二进制格式)

/var/log/btmp

使用lastb命令显示存储无效的登录历史记录,例如密码验证失败(二进制格式)

/var/log/messages

存储主系统日志信息

/var/log/dmesg

在启动时存储从内核输出信息

/var/log/maillog

存储有关邮件系统的信息

/var/log/secure

存储与安全相关的信息

/var/log/lastlog 

使用lastlog命令显示存储每个用户的最新登录信息(二进制格式)

/var/log/yum.log

包含使用yum安装的软件包信息

/var/lo/cron

存储cron历史记录信息已安排服务

下面是Ubuntu中的主要日志格式

文件名称

说明

/var/log/wtmp

使用last命令存储登录的用户、使用时间和系统重启信息(二进制格式)

/var/log/btmp

使用lastb命令显示存储无效的登录历史记录,例如密码认证失败(二进制格式)

/var/log/auth.log

将登录历史信息存储到系统中

/var/log/syslog

存储大量系统的日志信息

/var/log/kern.log

存储从内核输出的信息

/var/log/boot.log

系统启动时存储服务启动信息

/var/log/dmesg

启动时存储从内核输出的信息

/var/log/maillog

存储有关邮件系统的信息

/var/log/lastlog

使用lastlog命令显示存储每个用户的最新登录信息(二进制格式)

/var/log/apt/history.log

存储软件包管理系统的apt历史信息

一般情况下,系统产生很多的信息,这些信息中基本包括事件发生的具体时间、主机名、服务名称等。通过这些信息可以帮助我们排查系统产生的错误信息以及原因。

三:查看日志文件的信息

想要查看这些日志文件里的具体内容,可以使用之前说过的cat命令。演示如下图所示:

                                                          日志记录和管理_优先级

使用who命令显示当前系统中登录的用户信息,这个命令的执行结果引用了日志文件/var/run/utmp。last命令显示登录用户、使用时间和系统重启信息,该执行结果中的信息参照了/var/log/wtmp日志文件。通过不同的命令可以浏览各种日志文件。如下图所示:

                                                          日志记录和管理_日志文件_02

大多数情况下,系统管理员会集中管理多台服务器。通过记录并关注系统日志来检测故障并调查原因,学会使用各种日志管理工具管理日志文件,就不会发生由于网络故障或机械故障导致日志文件丢失的情况。管理日志文件的工具如下表所示:

日志管理工具

说明

syslog

广泛应用于系统日志,包括管理日志信息的优先级等

rsylog

基于syslog协议,支持多线程,增强了安全性

systemd-journald

是systemd日志的守护程序,可以将系统日志文件传输到其他syslog守护程序中存储

上面这些都是管理日志文件的工具,管理系统就必须要了解软件在系统上产生的各种信息,处了系统上的这些日志文件,管理日志文件的工具也很重要。

四:日志管理工具管理日志文件

rsyslog管理日志文件的服务是rsyslog.service,主要用来收集登录系统和网络等相关的信息。rsyslog由rsyslogd守护程序控制,rsyslog.service服务配置文件是/etc/rsyslog.conf,这个配置文件里面规定了服务的等级以及被记录的位置。使用cat命令查看/etc/rsyslog.conf文件中的内容,如下图所示:

                                                          日志记录和管理_优先级_03

Linux系统中的大多数日志文件存储在/var/log目录下,/etc/rsyslog.conf文件描述了与日志文件记录相关的各种设置,包括选择器和动作字段。选择器字段在facility.priority中指定并选择要处理的信息。facility指定信息的功能;priority指定信息的优先级,action字段由选择器字段选择,指定消息输出的目的地。当指定facility.priority时,将记录所有指定的优先级或者更高的优先级信息,指定特定的优先级使用facility.=priority,*表示优先级。

  • rsyslog的配置主要有以下的模块组成:
  • modules:配置加载模块。
  • global directivves:全局配置,配置rsyslog守护进程的全局属性。
  • rules:规则(选择器+动作),每个规则由selector部分和acrion部分组成。selector部分指定源和日志等级,acrion部分指定对应的操作。
  • 模板。
  • 输出。

规则中的selector(选择器)也由两部分组成,即facility和priority,由.(点号)间隔。

rsyslogd主要通过Linux内核提供的syslog相关的规范来设置数据的分类。我们可以通过syslog支持的一些服务类型来存储系统的信息,syslog支持的服务类型如下表所示:

服务类型

代码

说明

kern

0

内核信息

user

1

用户级别信息

mail

2

邮件系统

daemon

3

系统守护程序

auth

4

安全/身份认证信息

syslog

5

rsyslog程序产生的信息

lpr

6

打印相关的信息

news

7

news子系统

uucp

8

UUCP子系统

cron

9

cron守护进程产生的信息

authpriv

10

安全/身份认证信息

ftp

11

ftp守护程序

local0-local7

16-23

保留共本地使用

同一个服务产生的信息也是有差别的,既然有差别就有等级分类。syslog将这些信息纷争了八个主要的等级:


符号

说明

/绝对路径

输出至以绝对路径指定的文件或设备文件

|命令

将信息输出到指定的命令中,程序由输入命令程序读取

@主机名

指定要将日志传输到远程主机

.

发送给所有登录用户(显示在用户端上)

用户名

发送给由用户名指定的用户(显示在用户端上)

下面再看一下/etc/rsyslog.conf文件中的内容。*,info;mail.none;authpriv.none;cron.none表示除了mail(邮件)、authpriv(专用身份验证)和cron之外的信息均记录在/var/log/messages中,显示与mail相关的日志文件都记录在/var/log/maillog中,/etc/rsysllog.conf文件中与邮件有关的信息

在Ubuntu中需要查看/etc/rsyslog.d/50-default.conf文件的内容来获取日志信息。*.*;authpriv.none表示除了auth和authpriv之外的所有信息都记录在/var/log/syslog中,如下图所示:

                                                          日志记录和管理_优先级_04

五:创建记录(在系统的日志文件)

logger命令用于将facility和priority的信息发送到rsyslogd守护程序。

格式:logger [选项] [消息]

logger命令有连个常用的选项,如下表所示:

选项

说明

-f

发送指定文件的内容

-p

设置优先级,默认值为user.notice

在Ubuntu中使用logger命令在系统中创建一条记录,如下图所示。使用-p指定服务类型为user,优先级指定为info,并向rsyslogd守护程序发送"syslog user test"消息。

                                                          日志记录和管理_日志文件_05

还有logrotate可以对日志进行轮循,每个日志文件都可以被设置为每日、每周或每月处理,也可以设置文件太太时立即处理。系统默认每周执行一次轮循工作,旧的日志文件最多轮循4次就会被删除。

文件的轮循设置,可以在/etc/logrotate.conf文件中定义,如下如所示。weekly表示每周轮循一次,rotate 4表示默认轮循4次,及指定日志文件删除之前轮循的次数;create表示轮循后立即创建新的日志文件;datetxt表示代办事项扩展名是日期;include /etc/logrotate.d表示读取该目录文件。

演示操作如下图所示:

                                                          日志记录和管理_字段_06

管理日志文件的轮循可以使用logrotate命令,可以在配置文件中指定日志名称、间隔次数进行日志文件轮转。logrotate命令通常每天由/etc/cron.daily/logrotate脚本指定一次。

格式:logrotate [选项] 配置文件

一般情况下指定/etc/logrotate.conf配置文件。比如在这个配置文件中将每周(weekly)轮循更改为每天(daily)轮循,指定logrotate命令轮循日志文件,如下图所示。ls /var/log/syslog*表示检查当前的消息文件,使用date命令检查当天的日期,然后执行logrotate命令,再次查看当前的消息文件,显示已添加了执行日期文件。

                                                          日志记录和管理_日志文件_07

                                                          日志记录和管理_日志文件_08

systemd是系统启动时第一个被执行的程序,这个程序可以主动调用systemd-journald来管理日志文件。systemd-journald负责手机来自内核、启动程序早期、标准输出、系统日志、守护进程启动和运行期间的日志,它会将手机的日志存储在非易失性存储器或易失性存贮器中,日志文件存储为结构化二进制数据。在非易失性存储器中,重新引导系统后日志文件依然保留存在,在易失性存储器中,重新引导系统后日志文件会消失。

journalctl命令用于查看日志内容,可以查看systemd-journald收集的日志,但不能查看其他守护进程收集的日志,例如syslog和rsyslogd。Journalctl命令可以在配置文件/etc/system/journald.conf中设置各种参数。

格式:journalctl [选项] [字段=值]

journalctl命令主要选项如下表所示:

选项

说明

-b、--boot

显示从ID中指定的引导到停止的日志

-f、--follow

实时显示

-o、--output

指定输出格式。例如指定-o verbose显示详细信息

-p、--priority

显示具有指定格式优先级的日志

-n、--lines

指定要显示的最新记录

-e、--pager-end

跳到最新部分显示

-r、--reverse

以相反的顺序显示、顶部显示最新数据

--no-pager

显示时使用页眉

--since

在指定日期和时间之后显示

--until

在指定日期和时间之前显示

通过指定”--since=“和"--until="指定日期和时间范围,指定-p或"--priority="指定系统日志的优先级。如果指定了两个或者多个不同的字段,则将显示所有的匹配项;如果指定了两个或者多个相同的字段,则显示匹配项之一内容。journalctl命令的主要字段及说明如下表所示:

字段

说明

PRIORITY

syslog优先级,例如PRIORITY=4(warning)

SYSLOG_FACILITY

syslog工具,例如SYSLOG_FACILITY=2(mail)

_PID

进程ID

_UID

用户ID

_KERNEL_DEVICE

内核设备名称

_KERNEL_SUBSYSTEM

内核子系统名称

下面演示一下journalctl命令优先于warning的日志,如下图所示:

                                                          日志记录和管理_字段_09

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  G5UoiZ5izCEW   2023年11月13日   33   0   0 字段
  9JCEeX0Eg8g4   2023年11月19日   25   0   0 逆序日志文件x系统
  eo9lmrKcoG9P   2023年11月24日   28   0   0 泛洪OSPF优先级
  eHipUjOuzYYH   2023年11月13日   24   0   0 cssico字段
  L83A5jZvvg3Q   2023年11月22日   17   0   0 HTTP重定向字段
  L83A5jZvvg3Q   2023年11月22日   27   0   0 客户端HTTP字段
kIM7GUNpnV3x