journal介绍

  |  

journal 介绍

  1. journal 什么呢?
    journal 是 centos7 中 systemd 的一个组件,由 journald 处理。捕获系统日志信息、内核日志信息,以及来自原始 RAM 磁盘的信息,早期启动信息以及所有服务中写入 STDOUT 和 STDERR 数据流的信息。可以说是为 Linux 服务器打造的一种新系统日志方式,这些日志信息写入到二进制文件,使用 journalctl 阅读,默认存放在/run/log/下。
  2. 这跟之前 rsyslog 有啥区别或又有啥关系呢?
    systemd-journald.service:最主要的讯息收受者,由 systemd 提供的;
    rsyslog.service:主要登录系统与网络等服务的讯息;
    CentOS 7 除了保有既有的 rsyslog.service 之外,其实最上游还使用了 systemd 自己的登录文件日志管理功能喔!他使用的是 systemd-journald.service 这个服务来支持的。基本上,系统由 systemd 所管理,那所有经由 systemd 启动的服务,如果再启动或结束的过程中发生一些问题或者是正常的讯息, 就会将该讯息由 systemd-journald.service 以二进制的方式记录下来,之后再将这个讯息发送给 rsyslog.service 作进一步的记载。
    systemd-journald.service 的记录主要都放置于内存中,因此在存取方面性能比较好。我们也能够通过 journalctl 以及 systemctl status unit.service 来查看各个不同服务的登录文件! 这有个好处,就是日志文件可以随着个别服务让你查阅,在单一服务的处理上面,要比跑到 /var/log/messages 去大海捞针来的简易很多!

journalctl 使用

上面了解概念之后,记录下如何使用 journalctl。日志记录在/var/log/journal (或者/run/log/journal/),如下
在这里插入图片描述

  1. 常用命令
1
2
3
4
5
6
7
8
9
10
11
journalctl               #查看所有日志
journalctl -n 5 #查看最后5条日志
journalctl -p err #查看err类型的日志
journalctl -f #不断输出最后10条日志
journalctl --since today #查看今天的日志
journalctl --since "2020-05-12 08:00:00" --until "2020-05-12 09:00:00"
journalctl -o verbose #查看日志详细信息
journalctl --disk-usage #检查当前journal使用磁盘量
journalctl --vacuum-time=2d #只保存2天的日志
journalctl --vacuum-size=500M #最大500M
journalctl --verify #检查journal是否运行正常以及日志文件是否完整无损坏
  1. 持久保存日志

由于 journald 默认是保存在内存中,一旦服务器重启,就会丢失,作为生成环境,管理员必须保证系统任何日志不能丢失,通过修改配置文件做持久保存。
同时,systemd-journald.service 的配置文件主要参考 /etc/systemd/journald.conf 的内容,详细的参数可以参考 man 5 journald.conf 的数据,下面介绍下 storage 参数.
volatile“ 表示仅保存在内存中, 也就是仅保存在/run/log/journal目录中(将会被自动按需创建)。 “persistent“ 表示优先保存在磁盘上, 也就优先保存在/var/log/journal目录中(将会被自动按需创建), 但若失败(例如在系统启动早期”/var”尚未挂载), 则转而保存在/run/log/journal目录中(将会被自动按需创建)。 “auto“(默认值) 与 “persistent“ 类似, 但不自动创建/var/log/journal目录, 因此可以根据该目录的存在与否决定日志的保存位置。 “none“ 表示不保存任何日志(直接丢弃所有收集到的日志), 但日志转发不受影响。 默认值是 “auto

在这里插入图片描述

文章目录
  1. 1. journal 介绍
  2. 2. journalctl 使用