RH134第三章分析和存储日志

第三章

一,描述系统日志架构

1,系统日志记录

(1)日志记录的作用

          操作系统内核和其他程序(进程)会记录一些 系统事件,这些日志有助于系统审核 和问题排查

(2)日志服务:具体来说,系统有两个重要的日志服务

       <1>systemd-journald:这是一个 核心日志服务,负责收集和处理来自不同来源的日志。           

       <2>rsyslog:这是一个 日志传输和存储服务,负责处理和转发从 systemd-journald 收到的日志消息

(3)systemd-journald 服务

       <1>systemd-journald 是核心日志服务,收集的日志来自多个来源

             系统内核:操作系统内核产生的日志。

             启动过程:操作系统启动时的输出信息,

             守护进程的输出:系统后台进程(守护进程)的标准输出和错误输出。

             系统日志事件:各种系统事件的日志。

      <2>日志的处理

            格式化:systemd-journald 会把收到的日志按照标准格式进行处理。

            存储:这些日志会写入一个结构化的日志数据库,默认情况下这些日志会 丢失(即系统重启后不保留)

(4)rsyslog 服务

       <1>rsyslog 服务从 systemd-journald 获取日志,并将其存储在文件中。rsyslog 会按优先级和程序类型将日志进行分类和排序,然后存储到不同的日志文件里。

       <2>存储位置:这些日志文件通常存储在 /var/log目录下,但它们在系统重启后 不会保留。

(5)/var/log 目录

     /var/1og目录下存放了很多日志文件,其中不仅仅是来自syslog的日志,还包括系统和服务的其他日志文件。不同的文件记录不同的服务信息。

    

 二,查看syslog文件

1,将事件记录到系统

(1)syslog协议在系统中的作用

       <1>syslog 协议:它是一个标准化的协议,用于记录和传输日志信息。

       <2>操作系统和应用程序会使用这个协议将它们的事件(例如错误、警告信息等)记录下来

       <3>设备(子系统):每条日志消息都会标明是哪部分的程序或设备(比如操作系统网络服务、硬盘等)产生的。这有助于了解日志来源。

       <4>优先级(消息严重性):每条日志消息还有一个优先级,表示该消息的严重性。

       <5>标准的syslog设备概述表格

<6>syslog优先级概述表格

(2)rsyslog 服务处理日志消息

     <1>rsyslog 服务的配置

           rsyslog 服务通过读取配置文件(比如/etc/rsyslog.conf 和/etc/rsyslog.d/目录下的.conf 文件)来定义如何处理日志消息

           软件包安装时,可以在 /etc/rsyslog.d/目录中添加规则文件,来对日志处理进行配置。

     <2>日志规则的工作原理

           每一条规则会指定设备(日志的来源)和优先级(日志的严重程度)

           每一条规则的左侧是设备和优先级,右侧是日志存储的目标位置(

           **星号(*)**是通配符,表示可以匹配所有的设备或优先级。

     <3>

     <4>日志的特殊处理

            如果某些日志设备的优先级是none,那就表示这些设备的消息不会存储在指定的日志文件里。

            除了保存日志到文件外,你还可以让日志显示到所有已登录用户的终端上。比(紧急事件),这些信息会显示在所有用户的如,如果日志的优先级是 emerg屏幕上。

2,日志文件轮转

(1)日志文件通常会随着系统运行而越来越大,特别是像/var/log/messages 这样的日志文件,它们可能包含很多信息。为了防止这些日志文件占用太多空间,我们需要定期轮转这些日志文件,意思就是对日志文件进行归档、重命名,并创建新的日志文件来继续记录。

(2)如何进行轮转

       <1>轮转时重命名文件:当日志文件被轮转时,它会被重命名,通常是加上一个日期扩展名,表示这个日志文件是在某一天被归档的。例如,/var/log/messages 文件在2022年3月20 日轮转时,它会被重命名为/var/log/messages-20220320

       <2>创建新的日志文件:轮转后,系统会创建一个新的空日志文件,让日志继续记录下去。写入日志的服务会自动知道去写新的日志文件,而不是继续写到旧的日志文件中。

       <3>删除旧日志文件:经过若干次轮转后(通常是几周),系统会删除最旧的日志文件来释放磁盘空间,确保磁盘不会被日志文件填满。

(3)日志轮转的调度

<1>调度任务:每天,系统会运行一个名为1ogrotate的命令,检查是否有日志文件需要轮转。

<2>轮转频率:大多数日志文件通常是每周轮转一次。如果日志文件变得特别大,也可以在达到某个大小时就进行轮转。

3, 日志消息的格式

  /var/log/secure日志文件中的日志消息

 

4,监控日志事件

(1)tail -f /path/to/file

<1>tail命令用于查看文件的最后几行(默认显示最后 10 行)

<2>加上-f 选项后,命令会持续输出新写入到文件中的内容,因此可以实时查看文件的变化。这对于监控日志文件非常有用

(2)示例中的命 令

       <1>假设我们要监控:/var/log/secure 这个文件

             在第一个终端运行

      tail -f /var/log/secure

      终端就会开始显示 /var/log/secure 文件的最后 10 行内容,并实时显示新加入的内容

             在第二个终端中,使用 ssh 命令尝试从一台主机登录到另一台主机

     ssh root@hosta

     如果成功登录,系统会记录事件到 /var/log/secure 文件中

5,手动发送 Syslog 消息

(1)logger 命令用于向系统日志发送消息

<1>使用它向rsyslog服务发送信息,rsyslog会根据配置将这些信息记录到相应的日志文件中。

<2>默认情况下,会发送一条优先级为 notice 的消息,消息的设备是 userlogger类型(即 user.notice )。这意味着消息会被发送到所有记录用户消息的日志文件中

<3>自定义消息的优先级或设备,可以使用-p选项

<4>示例

三,查看系统日志条目

1,在系统日志中查找事件

(1)日志存储方式

systemd-journald 服务将日志数据以结构化的二进制格式存储在一个特殊的文件中,这个文件叫做"日志”。这些日志数据不仅包括事件的原始消息,还包含一些额外的信息,比如消息的优先级(即事件的严重程度),以及发送消息的设备等信息。

(2)存储位置

系统日志默认保存在 /run/log 目录下,这个目录是一个基于内存的目录。也就是说,当系统关机时,这些日志会丢失,因为它们存储在内存中。如果你希望日志在系统重启后能保留,可以将日志存储位置改为其他持久存储的位置

(3)查看日志

<1>查看系统日志,可以使用 journalct1命令。你可以使用它来查看所有日志消息,也可以通过特定的选项来查找某个特定的事件或信息

<2>root用户,可以查看所有日志内容;普通用户使用 journalct1时,系统可能会限制他们查看某些敏感的日志内容

(4)命令

<1>journalctl:会突出显示重要的日志消息

   命令格式:journalctl (-选项)

                优先级为 notice 或warning的消息显示为粗体文本

                而优先级为 error或以上的消息则显示为红色文本

         选项:

               -n选项显示最后 10个日志条目 参数可以更改

               -f选项输出系统日志的最后十行,并在日志附加新的日志条目时继续输出它们

               -p选项显示指定优先级(按名称或编号)或以上的日志条目

     journalctl命令按优先级升序方式,处理 debug、info、notice、warning、err、crit、alert和emerg 优先级

               -u选项和单元名称来显示指定 systemd 单元的消息

               --since和--until选项输出限制为特定的时间范围

    这两个选项都采用格式为"Y-MMDDhh:mm:ss"的时间参数(必须使用双引号,以保留选项中的空格)

               - overbose 选项会让journalct1以详细格式展示日志信息。

   此格式会包括额外的信息,如时间戳、日志的优先级、设备信息、消息内容以及更多的元数据

表格

          组合型

四,保留系统日志

1,系统日志存储

(1)systemd-journald 服务存储和管理日志文件

<1>日志存储位置

                 默认情况下,系统会把日志存储在 /run/1og目录下,这个目录存储的日志是易失性的,意味着系统重启后这些日志会丢失

                 如果你想让日志在系统重启后仍然保留,可以修改配置文件/etc/systemd/journald.conf 来将日志存储方式设置为 持久

      <2>Storage 参数

            persistent:将日志存储在 /var/log/journal 目录中,这样系统重启后日志仍然保留。如果这个目录不存在,系统会自动创建它。

            volatile:将日志存储在临时的 /run/log/journal 目录中,这个目录存储的日志在系统重启后会丢失。

            auto:如果 /var/log/journal 目录存在,日志会存储在这个目录里;如果不存在,则使用临时存储。

            none :不存储任何日志,只能转发日志。

<3>日志轮转与大小限制

       即使设置了持久存储,日志也不会一直保留。系统会定期轮转日志(每月)并且会限制日志文件的大小。日志文件的大小不得超过文件系统的 10%,并且在日志存储目录的可用空间低于 15% 时,系统会停止写入新的日志。

       这些设置可以在配置文件 /etc/systemd/journald.conf 中调整。

      <4>查询日志存储大小

(2)配置持久系统日志

配置 systemd-journald 服务,以在重启后持久保留系统日志

<1>创建/var/log/journal目录

<2>将/etc/systemd/journald.conf 文件中的Storage参数设置为 persistent 值

<3>重新启动 systemd-journald 服务,以应用配置更改。

                 该服务将在 /var/log/journal目录中创建子目录

                 /var/log/journal目录中的子目录名称较长且包含十六进制字符

                 二进制文件存储带有索引的结构化日志条目

<4>journalctl命令-b(第几次重启)选项将输出限制为特定的系统启动

          使用journalctl命令 -b选项及一个负数,以指示输出中要包含多少次较早的系统启动

<5>使用--list-boots选项来列出 journalctl命令识别的系统启动事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值