目录
[二、查看 syslog 文件:](#二、查看 syslog 文件:)
[(1)syslog 设备:](#(1)syslog 设备:)
[(2)syslog 优先级:](#(2)syslog 优先级:)
[3、syslog 条目:](#3、syslog 条目:)
[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 选项:)
一、系统日志架构:
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 | 邮件系统消息 | |
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 为个性化配置文件。
![](https://i-blog.csdnimg.cn/direct/d2f1d22011c646c382633bd01bc9ab5f.png)
2、日志文件轮转:
logrotate 命令将轮转日志文件,以防止 /var/log 的空间被占满。轮转日志文件时,重命名日志文件(原文件名添加时间戳)将创建一个日志文件并通知写入该日志文件的服务。
轮转若干次后(默认为4次),将丢弃最旧的日志文件以释放磁盘空间。调度的作业每天都会计划运行 logrotate 程序,轮转频率依据配置文件定义。
3、syslog 条目:
日志文件开头 显示最旧的消息,在末尾显示最新的信息,信息记录采用标准格式 如下:
![](https://i-blog.csdnimg.cn/direct/c4203f89c41e4c929c47784576ac5552.png)
(1)日志条目的时间戳;
(2)发送信息的主机;
(3)发送信息的程序名 称和 PID 编号;
(4)具体信息。
4、监控日志:
监控日志文件中的事件有助于重现问题,使用tail -f /path/to/file 命令可输出指定文件的最后 10 行 ,并继续输出新近写入到该文件中的行。
![](https://i-blog.csdnimg.cn/direct/72b327b026dd4f5f90629dc886ca3812.png)
5、手动发送 syslog 消息:
logger 命令可将消息发送到 rsyslog 服务。默认情况下,logger 命令将优先级为 notice 的消息发送给 user 类型的设备 ( user.notice ),否则则需要通过 -p 选项具体指定。
![](https://i-blog.csdnimg.cn/direct/d7e02383011241368ae4b8c5d8c68e94.png)
三、查找系统日志条目:
journalctl 命令突出显示重要的日志消息,优先级为 notice 或 warning 的消息显示为粗体,优先级为 error 或以上的消息显示为红色文本。
journalctl 命令的常用选项如下:
1、 -n 选项:
-n 选项指定显示 最后10条日志,也可以指定条目数量。
![](https://i-blog.csdnimg.cn/direct/b542ab913eb8433f8bf9d293b0d2944c.png)
2、-f 选项:
-f 选项可刷新日志。
![](https://i-blog.csdnimg.cn/direct/41d74ea35f454a23abca0bc6df577fb0.png)
3、-p 选项:
-p 选项将显示指定优先级 (按名称或编号)以及此优先级以上的日志条目。
![](https://i-blog.csdnimg.cn/direct/5f0cb23a57c54b6ab7ee999694785cc3.png)
4、-u 选项:
-u 选项后加单元名称将显示指定 systemd unit 信息。
![](https://i-blog.csdnimg.cn/direct/aaa860e46a7d4d65abd81f2a79fb22bd.png)
5、--since 选项:
--since 选项可指定日志时间段,除日期和时间字段外 ,还接受 yesterday 、today 以及 tomorrow 作为有效的参数。
例如,显示计算机上过去十分钟内记录的所有日志事件如下:
![](https://i-blog.csdnimg.cn/direct/84af2bb0a4e7487183cb0ee94c4fed94.png)
再例如,显示计算机上从今天上午 09:00:00 起记录的所有 sshd 日志事件如下:
![](https://i-blog.csdnimg.cn/direct/d9c6e8389b314a8995ef197e88fb9c2a.png)
6、-o 选项:
-o verbose 可显示 更加详细 的日志信息。
![](https://i-blog.csdnimg.cn/direct/8919e76a85d341a9a12d9a7bd9fe3c7c.png)
7、字段:
journalctl 配合字段使用,可以搜索特定内容的日志。
(1)_PID 即进程的 PID 。
![](https://i-blog.csdnimg.cn/direct/98656db0558d4d4195cfad35bb4a832b.png)
(2)_UID 即运行此进程的用户 UID 。
![](https://i-blog.csdnimg.cn/direct/0f76e8e036df421195d4def1b08c1891.png)
(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 中 进行设置。
查看日志空间占用情况如下:
![](https://i-blog.csdnimg.cn/direct/74605dc0aff345ceb275f88d63e0814d.png)
注:修改完配置文件,需要重启 systmed-journald 服务。
4、配置持久系统日志:
以将计算机上的 systemd-journald 服务配置成在系统重启后保留日志为例:
![](https://i-blog.csdnimg.cn/direct/845aad2831e346d78aa11adfb83bd918.png)
在 /etc/systemd/journald.conf 文件中,取消 Storage=auto 行的注释,并将 Storage 的参数值设置为 persistent 。
![](https://i-blog.csdnimg.cn/direct/9f33045376854a378c484c2892b04261.png)
![](https://i-blog.csdnimg.cn/direct/1671250af3234a6d8dacc8bc7634f6c6.png)
![](https://i-blog.csdnimg.cn/direct/aef787d88ccc4490a766062f56f4b9c1.png)
重启 systemd-journald 服务,应用配置更改。
![](https://i-blog.csdnimg.cn/direct/76f00c9230b24d43abd868712caf2794.png)