Linux基础:分析和存储日志(20210718笔记)

分析和存储日志

描述系统日志架构

基于日志系统协议标准的日志记录系统

两个服务

systemd-journald:守护进程提供一种改进的日志管理服务,可以来自内核、启动过程 的早期阶段、标准输出、系统日志,以及守护进程启动和运行期间的错误消息。(临时日志数据) 【阶段性清理】

rsyslog:根据数据类型或设备类型和优先级排列系统日志消息,将他们写入到/var/log 目录的永久文件中。

系统日志概述

在这里插入图片描述

查看系统日志文件

系统日志文件优先级

许多程序使用syslog 协议将事件记录到系统。

每一日志消息根据设备(消息的类型)和 优先级(消息的严重性)分类。

可用的设备在 rsyslog.conf(5) man page 中有概述。

在这里插入图片描述

做日志排查:通过优先级的关键字(err类型比较多)做日志检索

系统日志文件

rsyslogd 服务使用日志消息的设备(来源)和优先级来确定如何处理,配置规则位于/etc/rsyslog.conf 文件,以及 /etc/rsyslog.d 目录下的 *.conf 文件。
在这里插入图片描述

程序和管理员可以将带有 .conf 后缀的自定义文件放入 /etc/rsyslog.d 目录,以更改配置。

rsyslog 规则大致可以写为

<日志内容>.<严重程度> <存放位置>

mail.* /var/log/mail.log   #所有优先级的 mail 日志都保存在 mail.log  中

mail.err /var/log/mail.log 

注意:修改完成后,需要重新加载文件;日志的记录要权衡“量”的问题。

日志文件轮转

日志通过 logrotate 实用工具“轮转”,以防止将 /var/log/ 中的文件系统填满。

轮转日志文件时,会使用名称扩展对其进行重命名,名称扩展指示轮转日期:如果文件在2020年10月30日轮转后,则原来的 /var/log/messages 文件会变成 /var/log/messages-20201030。

轮原文件之后,会创建新的日志文件,并通知对他执行写操作的服务轮转若干次之后(通常轮转四次),丢弃原日志文件以释放磁盘空间。 (一般日志存储空间不能超过10——15%)

cron 作业每日运行一次 logrotate 程序,以查看是否有任何日志需要轮转

大多数日志文件每周轮转一次,但是 logrotate 轮转文件的速度有时比较快,有时较慢,或在文件达到特定大小时进行轮转。

配置文件:/etc/logrotate.conf

在这里插入图片描述

分析日志条目

由rsyslog 管理的日志文件中所有的日志条目都以标准的格式记录

在这里插入图片描述

① 日志条目的时间戳

② 发送该日志条目的主机

③ 发送该日志条目的程序或进程和 PID (IP+端口)

④ 日志条目的详细信息

生成日志

logger  #生成指定内容的 notice 级别日志,可以使用 -p 指定级别

logger -p authpriv.error "hello world"  

发送来自 authpriv(权限系统)的 error 级别日志消息,消息内容为hello world, 它将根据日志配置文件存放在相应的日志文件中。

查看日志

a) 直接查看日志文件

vim <日志> #可以看到日志文件的全部信息,但不利于快速定位目标 

cat <日志> | grep XXX #结合 grep 命令快速筛选 

tail -f <日志> #动态查看文件末尾(常用)

last #看最近登录的情况

lastb #看最近登录失败的情况

b) 通过 journalctl 查找 systemd 事件

systemd 是系统启动时,第一个开始的进程。

该进程的日志数据会被 systemd-journald 服务存储在带有索引的结构化二进制文件中。默认是 /run/log,重启会清除(仅限查看本次开机后的全部日志文件)。

【和rsyslog不冲突,两者不相关,两个不同服务对日志做不同的处理操作】

journalctl #查看所有日志消息 

【root用户可以查看全部日志,普通用户可能会被限制查看某些消息】

journalctl -n 5 #查看最后5条日志消息 

journalctl -o verbose #查看详细的日志消息 (额外字段)

journalctl -f #动态查看最后10条日志消息 

journalctl -p <级别> #只显示该级别以上的日志,例如:err 

journalctl 命令以粗体突出 notice 或 warning,以红色文本显示 err 及更高

输出限制为特定时间段

journalctl --since today

–since --until 输出限制为特定时间范围(“YYYY-MM-DDhh:mm:ss”/yesterday、today、tomorrow)

(07:00–09:00 应写为 07:00–08:59)

journalctl [--since ] [--until ] 

查看从某时间开始或某个时间前的日志

时间的写法:“2019-12-25 10:30:00”

支持使用 today、tomorrow、yesterday

日期默认为当天;时间默认是 0 点

支持指定某个时间的所有条目,例 journalctl --since “-1 hour” 查看前一个小时的日志

在这里插入图片描述

系统日志的常用字段(用于搜索与特定进程或事件相关的行)【可以组合多个字段使用】

_COMM:命令的名称

_EXE:进程的可执行文件的路径

_PID:进程的 PID 编号

_UID:运行进程的用户的 UID

_SYSTEM_UNIT:启动该进程的 systemd 单元

journalctl _SYSTEMD_UNIT=sshd.service _PID=1182

查看 sshd.service 服务,PID 为1182的进程的日志消息

保存systemd系统日志

systemd 的日志默认是临时的(/run/log/journal),可以配置为保留,配置文件为 /etc/systemd/journald.conf 。

修改 Storage 参数保存 systemd 系统日志

persistent:将日志存储在 /var/log/journal 目录,如果目录不存在就创建这个目录 【持久保留】

volatile:临时存储日志,也就是存储在 /run/log/journal 中 【易失性存储】

auto:如果存在 /var/log/journal 目录,日志将会存储在该目录下【如有则永久存储,否则易失性存储】

设置永久保存 systemd 的系统日志

vim /etc/systemd/journald.conf 

Storage Volatile ======> Persistent (注释掉(#)表示都以默认值为标准(未设置storage参数时))

(或者不动注释但加一行 Storage=persistent)

systemctl restart systemd-journald

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

journal -b 将输出限制为特定的系统启动

仅检索第一次系统启动的条目

journalctl -b 1

仅检索第二次系统启动的条目(当系统重启两次以上时才有意义)

journalctl -b 2

仅检索当前系统启动的条目

journalctl -b

将输出限制为上一次启动

journalctl -b -1

维护准确的时间

维护时间的准确

对于在多个系统间分析日志文件而言,正确的同步系统时间非常重要。

时间的同步主要有两种方式

通过网络时间协议 NTP 获取正确时间信息。

通过高质量硬件时钟为本地客户端提供准确时间。

timedatectl 命令可以查看时间相关的系统设置:时间、时区、NTP 设置等。

在这里插入图片描述

配置系统的时区

timedatectl list-timezones #列出系统包含的时区数据库 

tzselect #以交互的形式,识别某时区的正确名称

在这里插入图片描述

timedatectl set-timezone <洲/国家> #设置系统的时区

timedatectl set-timezone UTC  #将系统的当前时区设置为UTC(协调世界时)

配置系统的时间

timedatectl set-time YYYY-MM-DD hh:mm:ss #设置系统的时间 

timedatectl set-ntp ture/false #启用/禁用 NTP【要先关掉时间同步,禁止自动调整时间】

在这里插入图片描述

配置和监控chronyd

系统 chrond 服务与配置的 NTP 服务器同步,使通常不精确的本地硬件时钟(RTC)保持准确。

(保证所有服务器都有chrony服务,保证所有服务器都有ntp服务器的ip)

配置文件:/etc/chrony.conf

配置本地 NTP 服务器过程:

a) 修改配置文件 /etc/chrony.conf “server 地址 iburst”

在这里插入图片描述

b) systemctl restart chrond #重新启动 chronyd 服务

systemctl restart chrond

验证NTP服务器配置

chronyc sources -v #查看 NTP 配置 

在这里插入图片描述

使用 timedatectl 查看是否已经完成同步

timedatectl

S(源状态)字段中的*字符表示服务器已被用作时间源(同步NTP服务器成功)

时间源质量

在这里插入图片描述

服务器(涉密)一般不接外网【手动调NTP服务器时间,其它自动同步】

教材总结

在这里插入图片描述

练习题

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值