systemd 之 journalctl

2023-10-29

原文地址:https://www.cnblogs.com/itxdm/p/Systemd_log_system_journalctl.html

Systemd 日志系统

一、前言

昨天写了一篇文章,内容为:Systemd 常规操作与彩蛋,参考了 ArchLinux 官方文档并结合培训中的思路进行了部分修改补充。如果你懂得了基础的管理,那必然还需要做维护和审计。这时候就需要 Redhat7 中的systemd 架构下的——systemd-journald

下有俩例子对比 init.d 和 systemd :

service daemon ---> rsyslog ---> /var/log

systemd --> systemd-journald --> ram DB --> rsyslog -> /var/log

当 systemd 启动后,systemd-journald 也会立即启动。将日志存入RAM中,当rsyslog 启动后会读取该RAM并完成筛选分类写入目录 /var/log 。所以牵扯到DB,操作就会很舒服。

二、基础知识

描述RHEL7的基本系统日志(syslog)架构

  • 进程和操作系统内核需能够为发生的事件记录日志
  • 日志内容可用于系统审计和故障排除
  • 默认日志存储在 /var/log 目录中
  • RHEL的日志系统基于 syslog 协议,许多程序使用此系统记录事件,并将齐整理到日志
    文件中
  • RHEL7的日志系统由systemd-journald和 rsyslog 两服务组成

systemd-journald和rsyslog:

  • 一种改进的日志管理服务,是 syslog 的补充,收集来自内核、启动过程早期阶段、标
    准输出、系统日志,守护进程启动和运行期间错误的信息
  • 将消息写入到结构化的事件日志中(数据库),默认情况下重启后删除
  • syslog 的信息也可以由 systemd-journald 转发到 rsyslog 中进一步处理
  • 默认情况下,systemd 的日志保存在 /run/log/journal 中,系统重启就会清除,这是RHEL7的新特性。通过新建 /var/log/journal 目录,日志会自动记录到这个目录中,并永久存储。
  • rsyslog 服务随后根据优先级排列日志信息,将它们写入到 /var/log目录中永久保存

三、常规操作

systemd提供了自己的日志系统(logging system),称为 journal。使用 systemd 日志,无需额外安装日志服务(syslog)。读取日志的命令:

# journalctl 

​ 重要:显示所有的日志信息,notice或warning以粗体显示,红色显示error级别以上的信息

显示最后行数的日志:

# journalctl -n

显示最详细信息:

# journalctl -f

​ 提示:其实它很像tailf命令,默认显示十行。随着匹配日志的增长而持续输出。

只显示错误、冲突和重要告警信息

# journalctl -p err..alert

​ 提示:也可以使用数字表示哟。

显示指定单元的所有消息:

# journalctl -u netcfg

​ 重要:一般 -u 参数是 systemctl status 调用的参数之一(journalctl -l 可查看所有)

​ 提示:如果希望显示 kernel 的信息需要使用 journalctl -k 进行内核环缓存消息查询。

显示从某个时间 ( 例如 20分钟前 ) 的消息:

# journalctl --since "20 min ago"
# journalctl --since today
# journalctl --until YYYY-MM-DD 

显示本次启动后的所有日志:

# journalctl -b

不过,一般大家更关心的不是本次启动后的日志,而是上次启动时的(例如,刚刚系统崩溃了)。可以使用 -b 参数:

  • journalctl -b -0 显示本次启动的信息
  • journalctl -b -1 显示上次启动的信息
  • journalctl -b -2 显示上上次启动的信息
  • journalctl -b -2 只显示错误、冲突和重要告警信息

显示特定进程的所有消息:

# journalctl _PID=1
1. \_COMM 显示特定程序的所有消息,例如:``journalctl /usr/lib/systemd/systemd``
2. \_EXE 进程的可执行文件的路径
3. \_PID 进程的PID
4. \_UID 运行该进程用户的UID
5. _SYSTEMD_UNIT 启动该进程的 `systemd` 单元

​ 提示:以上筛选条件可组合使用,例如:journalctl _SYSTEMD_UNIT=sshd.service _PID=1182

显示更多输出方案:

# journalctl -o short|short-iso|short-percise|short-monotonic|verbose|export|json|json-pretty|json-sse|cat

四、一些其他

Q:你说有RAM的DB文件,在哪里?

A:文件位于 /run/log/joutmal ,下附命令。

➜  ~ cd /run/log/journal 
➜  journal ll
total 0
drwxr-s---+ 2 root systemd-journal 60 Aug 27 02:08 b30db55783924f1ea633ca636730d409
➜  b30db55783924f1ea633ca636730d409 cat system.journal 

Q:那 joutnal 有配置文件吗,有的话在哪呢?

A:有的。容量定义文件位于 /etc/systemd/journald.conf ,日志调整文件位于 /etc/logrotate.conf

日志系统同样会进行轮转,每月触发。默认情况下,日志大小不能超过所处文件系统的10%,也不可使所处文件系统空间低于15%。在 /etc/systemd/journald.conf 可进行大小容量上的调节;而在 /etc/logrotate.conf 则定义了那些日志文件记录、怎么记录、记录多少。

Q:那你说到了日志轮询,在哪里实现呢?

A:在计划任务实现。

➜  ~ sudo cat /etc/cron.daily/logrotate
\#!/bin/sh

/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

Q:在 journalctl -p 一节说可以使用数字表达,有详细吗?

A:如下。但是建议使用英文表达,因为不同发行版本可能编码有不同,而英文是标准是通用。

编码 优先级 严重性
0 emerg 系统不可用
1 alert 必须立即采取措施
2 crit 严重状况
3 err 非严重错误状况
4 warning 警告状况
5 notice 正常但重要的事件
6 info 信息性事件
7 debug 调试级别消息

五、结文总结

通过作者参加 RHCE 工程师的培训,分享了 systemd 与 journalctl 的使用。

希望你可以喜欢。如果 ITer奋斗点滴对您有所帮助,请通过赞赏鼓励我坚持下去。

(完)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

systemd 之 journalctl 的相关文章

随机推荐

  • 【R语言】实验二 基本数据处理

    系列文章目录 实验一 R 语言数据结构 数据导入与数据处理 实验二 基本数据处理 实验三 数据可视化 实验四 数据分析 实验五 综合应用 实验数据 实验数据下载 1 item feature1 数据集字段 date 日期 item id 商
  • 基于SpringBoot的招聘信息管理系统的设计与实现

    1 1 课题背景与意义 在Internet高速发展的今天 计算机的应用几乎完全覆盖我们生活的各个领域 互联网在经济 生活等方面有着举足轻重的地位 成为人们资源共享 信息快速传递的重要渠道 在中国 网上管理的兴起也同时飞速发展着 为了适应现代
  • IDEA的常用设置

    打开设置的快捷键 ctrl alt s 关闭Intellij IDEA自动更新 在File gt Settings gt Appearance Behavior gt System Settings gt Updates下取消Automat
  • 百度地图点聚合中marker的infowindow消失的问题

    目前的业务场景是 地图中有多个点的点聚合 聚合点展开后 每个marker有自己的点击事件 点击时显示窗口信息 做法是marker openInfoWindow infowin 问题来了 每次点击时地图会自动将窗口平移到地图中心 这时窗口就消
  • UE5《Electric Dreams》项目PCG技术解析 之 PCGCustomNodes详解(四)ApplyHierarchy

    继续解析 Electric Dreams 项目中的自定义节点和子图 ApplyHierarchy 文章目录 前导文章 标准组合拳 ApplyHierarchy Execute with Context Iteration Loop Body
  • 字节跳动-【ByteIntern】算法工程师实习生-生活服务

    奥迪动力系统工程师岗提供了在外企实习的经历 工作相对轻松 在奥迪担任动力系统工程师的岗位上 工作相对轻松 办公室氛围好 同事友善 领导也比较开明 这份工作提供了在外企实习的经历 而且同事主要来自中国和德国 有时还会有其 题解 字符串分隔 i
  • vant 绑定银行卡页面+验证所属银行+身份证号码+所属银行选择器

  • 网易笔试的一道题

    写一个程序 打印出以下的序列 a b c d e z a b a c a d a e a z b c b d b z c d y z a b c a b d a b z a c d x y z a b c d x y z const cha
  • [LeetCode] Add Digits - 数字各个位数求和

    题目概述 Given a non negative integer num repeatedly add all its digits until the result has only one digit For example Give
  • Java泛型知识点总结

    一 Java泛型的概述 泛型 是一种把类型明确的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型 由来 通过Object转型问题引入 早期的Object类型可以接收任意的对象类型 但是在实际的使用中 会有类型转换的问题 也就存在这隐
  • 区块链和数据库

    本文由币乎社区 bihu com 内容支持计划奖励 这是 区块链技术指北 的第 15 篇文章 如果对我感兴趣 想和我交流 我的微信号 Wentasy 加我时简单介绍下自己 并注明来自 区块链技术指北 同时我会把你拉入微信群 区块链技术指北
  • java 版本区别,java SE是什么,下载JDK时各个名称的含义

    https blog csdn net yinghuo110 article details 80658308
  • pandas基本操作

    df转csv文件 df to csv df转excel文件 df to excel df增加列 df insert df column name data df增加行 df append df合并 df concat df索引行或者列 df
  • Qt自定义QWidget

    Qt自定义QWidget 实例1 电池 实例2 plot绘图 实例3 plot按比例绘图 实例1 电池 promotion pro QT core gui greaterThan QT MAJOR VERSION 4 QT widgets
  • 好玩的整固代码,你学会了吗?

    Win系统下 今天装机之家教你使用一行代码就可以让电脑卡的死机 可以发给朋友整蛊一下 友情提示 整蛊有的度 不要把别人惹恼了 代码 0 0 将这5个字符复制到记事本上 以bat格式保存 将这个BAT发给其他朋友让他点击试试 保证不过一会你的
  • vue3 + element plus 自定义验证规则(两个表单必填其中一个)

    element plus 表单 自定义验证规则 const validateCustom rule any value any callback any gt if contactsForm value mobile contactsFor
  • 快速上手MongoDB和Python交互

    一 安装 导入 pip install pymongo from pymongo import MongoClient MongoDB 默认没有用户名密码 二 连接数据库 方式一 client MongoClient host localh
  • InputStream转MultipartFile

    import org apache commons fileupload FileItem import org apache commons fileupload FileItemFactory import org apache com
  • 获取iOS项目名称及版本号的方法

    NSDictionary infoDictionary NSBundle mainBundle infoDictionary CFShow infoDictionary app名称 NSString app Name infoDiction
  • systemd 之 journalctl

    原文地址 https www cnblogs com itxdm p Systemd log system journalctl html Systemd 日志系统 一 前言 昨天写了一篇文章 内容为 Systemd 常规操作与彩蛋 参考了