Linux(21)——系统日志

目录

一、系统日志架构:

1、系统日志:

2、日志文件类型:

[二、查看 syslog 文件:](#二、查看 syslog 文件:)

1、将事件记录到系统:

[(1)syslog 设备:](#(1)syslog 设备:)

[(2)syslog 优先级:](#(2)syslog 优先级:)

(3)配置文件:

2、日志文件轮转:

[3、syslog 条目:](#3、syslog 条目:)

4、监控日志:

[5、手动发送 syslog 消息:](#5、手动发送 syslog 消息:)

三、查找系统日志条目:

[1、 -n 选项:](#1、 -n 选项:)

[2、-f 选项:](#2、-f 选项:)

[3、-p 选项:](#3、-p 选项:)

[4、-u 选项:](#4、-u 选项:)

[5、--since 选项:](#5、--since 选项:)

[6、-o 选项:](#6、-o 选项:)

7、字段:

四、永久保存系统日志:

1、系统日志存储:

2、永久保存:

3、日志空间占用:

4、配置持久系统日志:


一、系统日志架构:

1、系统日志:

操作系统内核和其他进程在系统运行时发生的事件 记录为日志 ,日志用于系统审计以及故障排除,通常保存在 /var/log 目录中,可以使用 less 和 tail 命令进行查看。

RHEL 日志基于 Syslog 协议标准记录系统消息,systemd-journald 和 rsyslog 服务处理syslog 日志。systemd-journald 是日志架构核心,默认将日志记录在内存中,记录几乎所有事件消息并存放到带索引的数据库中,包括内核、引导过程早期的输出,守护进程的标准输出、标准错误以及系统日志事件等。而rsyslog 服务将从数据库中读取 systemd-journald 的日志 ,并按照配置文件的定义进行存放,同时 rsyslog 服务也可以根据日志优先级,将日志消息排序到特定的日志文件。

2、日志文件类型:

日志文件 存储的消息类型
/var/log/messages 大多数系统日志消息,包括与身份验证、电子邮件处理、调度作业以及与调试相关的消息
/var/log/secure 安全性、身份验证相关的 syslog 消息
/var/log/maillog 邮件服务器相关的 syslog 消息
/var/log/cron 调度作业执行相关的 syslog 消息
/var/log/boot.log 系统启动 相关的syslog 控制台消息

二、查看 syslog 文件:

1、将事件记录到系统:

很多程序都使用 syslog 协议将事件记录到系统,而每一日志消息又将根据设备以及优先级进行分类排序。

(1)syslog 设备:

代码 设备 设备描述
0 kern 内核消息
1 user 用户级消息
2 mail 邮件系统消息
3 daemon 系统守护进程消息
4 auth 身份验证和安全消息
5 syslog 内部 syslog 消息
6 lpr 打印机消息
7 新闻 网络新闻消息
8 uucp UUCP 协议消息
9 cron 时钟守护进程消息
10 authpriv 非系统授权消息
11 ftp FTP 协议消息
16-23 local0 - local7 自定义本地消息

(2)syslog 优先级:

代码 优先级 优先级描述
0 emerg 系统不可用(终端显示)
1 alert 必须立即采取措施
2 crit 临界情况
3 err 非严重错误情况
4 warning 警告情况
5 notice 正常但重要的事件
6 info 信息性事件
7 debug 调试级别消息

(3)配置文件:

1)/etc/rsyslog.conf全局配置文件。

2)/etc/rsyslog.d/*.conf个性化配置文件。

2、日志文件轮转:

logrotate 命令将轮转日志文件,以防止 /var/log 的空间被占满。轮转日志文件时,重命名日志文件(原文件名添加时间戳)将创建一个日志文件并通知写入该日志文件的服务。

轮转若干次后(默认为4次),将丢弃最旧的日志文件以释放磁盘空间。调度的作业每天都会计划运行 logrotate 程序,轮转频率依据配置文件定义。

3、syslog 条目:

日志文件开头 显示最旧的消息,在末尾显示最新的信息,信息记录采用标准格式 如下:

(1)日志条目的时间戳

(2)发送信息的主机

(3)发送信息的程序名 称和 PID 编号;

(4)具体信息。

4、监控日志:

监控日志文件中的事件有助于重现问题,使用tail -f /path/to/file 命令可输出指定文件的最后 10 行 ,并继续输出新近写入到该文件中的行

5、手动发送 syslog 消息:

logger 命令可将消息发送到 rsyslog 服务。默认情况下,logger 命令将优先级为 notice 的消息发送给 user 类型的设备 ( user.notice ),否则则需要通过 -p 选项具体指定

三、查找系统日志条目:

journalctl 命令突出显示重要的日志消息,优先级为 notice 或 warning 的消息显示为粗体,优先级为 error 或以上的消息显示为红色文本。

journalctl 命令的常用选项如下:

1、 -n 选项:

-n 选项指定显示 最后10条日志,也可以指定条目数量。

2、-f 选项:

-f 选项可刷新日志

3、-p 选项:

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

4、-u 选项:

-u 选项后加单元名称将显示指定 systemd unit 信息

5、--since 选项:

--since 选项可指定日志时间段,除日期和时间字段外 ,还接受 yesterday 、today 以及 tomorrow 作为有效的参数。

例如,显示计算机上过去十分钟内记录的所有日志事件如下:

再例如,显示计算机上从今天上午 09:00:00 起记录的所有 sshd 日志事件如下:

6、-o 选项:

-o verbose 可显示 更加详细日志信息

7、字段:

journalctl 配合字段使用,可以搜索特定内容的日志

(1)_PID 即进程的 PID 。

(2)_UID 即运行此进程的用户 UID 。

(3)_COMM 即命令的名称;

(4)_EXE 即进程的可执行文件的路径;

(5)_SYSTEMD_UNIT 即启动该进程的 systemd 单元。

四、永久保存系统日志:

1、系统日志存储:

默认情况下,system journal 保存在内存 /run/log/journal 目录中,系统重启时会被清除

2、永久保存:

修改 /etc/systemd/journald.conf 中 Storage 参数可以设置日志永久保存,常见参数如下:

(1)persistent :永久保存在 /var/log/journal 目录中;

(2)voltile :临时保存在 /run/log/journal 目录中;

(3)auto(默认):如果有 /var/log/journal 目录存在,则永久保存, 反之则临时保存;

(4)none :不使用任何存储,系统将丢弃所有日志(但用户依然可以转发日志)。

3、日志空间占用:

日志大小受到轮转机制限制,在默认情况下,日志的大小不能超过所处文件系统的 10%,也不能造成文件系统的可用空间低于15%,此值可以在 /etc/systemd/journald.conf 进行设置

查看日志空间占用情况如下:

注:修改完配置文件,需要重启 systmed-journald 服务。

4、配置持久系统日志:

以将计算机上的 systemd-journald 服务配置成在系统重启后保留日志为例:

在 /etc/systemd/journald.conf 文件中,取消 Storage=auto 行的注释,并将 Storage 的参数值设置为 persistent

重启 systemd-journald 服务,应用配置更改。

相关推荐
sunz_dragon6 分钟前
Claude Code / Codex Git 版本管理完整使用指南
服务器·人工智能
领尚7 分钟前
openclaw 极简安装(Ubuntu 24.04 server)
linux·运维·ubuntu
Gofarlic_OMS22 分钟前
Windchill的license合规使用报告自动化生成与审计追踪系统
大数据·运维·人工智能·云原生·自动化·云计算
迷途之人不知返26 分钟前
shell相关知识与Linux权限
linux
SPC的存折29 分钟前
3、主从复制实现同步数据过滤
linux·运维·服务器
SPC的存折31 分钟前
openEuler 24.03 MariaDB Galera 集群部署指南(cz)
linux·运维·服务器·数据库·mysql
xcbrand33 分钟前
文旅行业品牌策划公司找哪家
大数据·运维·人工智能·python
SPC的存折1 小时前
MySQL 8.0 分库分表
linux·运维·服务器·数据库·mysql
风吹迎面入袖凉1 小时前
【Redis】Redisson分布式锁原理
java·服务器·开发语言
cyber_两只龙宝1 小时前
【Oracle】Oracle之DQL中WHERE限制条件查询
linux·运维·数据库·云原生·oracle