用户
搜索

该用户从未签到

i春秋-脚本小子

Rank: 2

7

主题

7

帖子

139

魔法币
收听
0
粉丝
1
注册时间
2020-9-9
发表于 2021-9-22 22:18:34 12384
本篇文章作者邪色蝴蝶,本篇文章参与i春秋作家连载计划所属邪色蝴蝶个人,未经许可,禁止转载。

0X00:前言
各位表哥们,大家好,这是我连载的第九篇文章,有不足之处请大家多多指出。
本篇是写Linux-分析和储存日志

0X01:
系统日志记录
进程和操作系统内核为发生的事件记录日志,这些日志用于系统审核和问题的故障排除。许多系统都以文本文件的方式记录事件日志,而这些文件保持在/var/log目录中。可以使用常规文本使用程序检查这些日志,在Linux中,则建立了一个基于Syslog协议的标准日志记录统。许多程序使用此系统记录事件,并将它们整理到日志文件中,systemd-journaldrsyslog服务则用于处理Linux中的syslog消息。
Systemd-journald服务是操作系统事件日志架构的核心。它收集许多来源的事件消息,包括内核、引导过程早期阶段的输出、守护进程启动和运行时的标准输出及标准错误,以及syslog事件。然后,它会将它们重构为一种标准格式,并写进带有索引的结构化系统日志中,默认情况下,该日志存储在系统重启后不保留的文件系统上。
不过,rsyslog服务会从日中中读取systemd-journald收到的syslog消息。之后,它将处理syslog事件,将它们记录到日志文件中,或根据自己的配置将它们转发给其他服务。
Rsyslog服务对syslog消息进行排序,并将它们写入到系统重启后不保留的日志文件中。Rsyslog服务会根据发送每条消息的程序类型或设备以及每条syslog消息的优先级将日志消息排序到特定的日志文件。
除了syslog消息文件外,/var/log目录中还包含系统上其他服务的日志文件。(如下面所示)
QQ截图20210919105711.png

0X02:查看系统日志文件
许多程序使用syslog协议将事件记录到系统,每一日志消息根据设备和优先级分类。(下面是优先级到高到低的排序)
QQ截图20210919110209.png

Rsyslog服务使用日志消息的设备和优先级来确定如何进行处理,其配置规则位于/etc/rsyslog.conf文件和/etc/rsyslog.d目录中拓展为.conf的任何文件。通过在/etc/rsyslog.d目录中安装适当的文件,软件包也可以轻松地添加规则。
每个控制着syslog消息排序方式的规则都对应了其中一个配置文件中的一行。每行左侧表示与规则匹配的syslog消息的设备和严重性,每行右侧表示将日志保持到的文件。星号(*)是一个匹配所有值的通配符。
日志消息有时会匹配rsyslog.conf中的多条规则。在这种情况下,一天消息会存储到多个日志文件中,为限制存储的消息,优先级字段中的关键字none指出不应将指定设备的消息存储在给定的文件中。除了将syslog消息记录到文件中外,也可将它们显示到所有已登录用户的终端。
监控一个或多个日志文件中的事件有助于重现问题。例如,要监控失败的登录尝试,需要我们在一个终端运行tail命令,然后在用户尝试登录时在另一个终端以root用户身份运行ssh命令。
QQ截图20210919171916.png
QQ截图20210919171936.png
QQ截图20210919171955.png
0X03:查看系统日志条目
Systemd-journald服务将日志数据存储在带有索引的机构化二进制文件中,该文件称为日志。此数据包含与日志事件相关的额外信息。要从日志中检索日志消息。我们可以用journalctl命令来查看日志中所有消息,或根据各种选项和标准来搜索特定事件。如果以root身份运行该命令,则对日志具有完全访问权限,普通用户也可以使用该命令,但可能会被限制查看某些消息。
QQ截图20210919172609.png

Journalctl命令突出显示重要的日志消息:优先级为noticewarning的消息显示为粗体文本,而优先级为error或以上的消息显示为红色文本。默认情况下,journalctl -n显示最后10个日志条目,我们可以借助参数对此进行调整,它可以指定要显示的日志条目。
使用journalctl命令查看后五行日志条目:
QQ截图20210919173047.png
为了帮助对问题进行故障排除,可能需要根据日志条目的优先级过滤日志输出。Journalctl -p可以接受优先级的名称或者编号作为参数,并显示该优先级及以上的日志条目。Journalctl命令理解debuginfonoticewarningerrcritalertalertemerg优先级。
使用journalctl命令查看优先级为err或以上的日志条目:
QQ截图20210919173515.png

除了日志的可见内容外,日志条目中还附带了只有在打开详细输出时才能看到的字段,任何显示的额外字段都可用于过滤日志查询的输出,这可用于减少查找日志中特定事件的复杂搜索的输出。
QQ截图20210919173819.png
下面提供了系统日志的常用字段,可用于搜索与特定进行或事件相关的行。
QQ截图20210919173923.png

0X04:保留系统日志
默认情况下,系统日志保持在/run/log/journal目录中,这意味着系统重启时这些日志会被清除。我们可以在/etc/systemd/journald.conf文件中更改systemd-journald服务的配置设置,使日志在系统重启后保留下来。/etc/systemd/journald.conf文件中的Storage参数决定系统日志以易失性方式存储,还是在系统重启后持久保留,主要有以下三个参数:
Persistent:将日志存储在/var/log/journal目录中,这可在系统重启后持久保留,如果/var/log/journal目录不存在,systemd-journald服务会创建它。
Volatile:将日志存储在易失性/run/log/journal目录中,因为/run文件是临时的,仅存在与运行时内存中,存储在其他的数据不会在系统重启后持久保留。
Autorsyslog决定使用持久存储还是易失性存储,如果/var/log/journal目录存在,那么rsyslog会使用持久存储,否则使用易失性存储。如果未设置storage参数,此为默认操作。
要将systemd-journald服务配置为在系统重启后持久保留系统日志,我们需要在/etc/systemd/journald.conf文件中将storage设为persistent。以超级用户运行我们的文本编辑器,来编辑/etc/systemd/journald.conf文件。编辑配置文件后,重新启动systemd-journald服务使配置更改生效。
如果systemd-journald服务重新启动,我们可以看到/var/log/journal目录已创建好,并且包含一个或多个子目录,这些子目录的长名称中包含十六进制字符,含有*.journal文件。*.journal文件是存储带有索引的结构化日志条目的二进制文件。
QQ截图20210919175701.png







































感谢楼主分享
使用道具 举报 回复
发新帖
您需要登录后才可以回帖 登录 | 立即注册