在Systemd出现之前,Linux系统及各应用的日志都是分别管理的,Systemd开始统一管理了所有Unit的启动日志,这样带来的好处就是可以只用一个 journalctl命令,查看所有内核和应用的日志。

1. 基础用法

1.1 查看所有日志(默认显示本次启动的所有日志)

[root@devops-101 ~]# journalctl

查看本次启动的所有日志也可以使用

[root@devops-101 ~]# journalctl -b

1.2 查看内核日志

[root@devops-101 ~]# journalctl -k

1.3 查看指定时间的日志

通过--since和--until选项,可以过滤任意时间限制,显示指定条件之前、之后或之间的日志。

[root@devops-101 ~]# journalctl --since="2018-09-21 10:21:00"

查询一个时间段范围内的日志。

[root@devops-101 ~]# journalctl --since="2018-09-21 10:21:00" --until="2018-09-21 10:22:00"

1.4 根据不同的主题进行过滤筛选

根据服务筛选

[root@devops-101 ~]# journalctl -u kubelet.service
[root@devops-101 ~]# journalctl -u kubelet

根据进程ID查询

如果进程使用了systemd托管日志,则可以通过以下命令查找进程对应的日志。

[root@devops-101 ~]# journalctl _PID=1

Systemd journal 有很多可以用来过滤的字段,可以通过 man systemd.journal-fields 查看所有可以用来过滤的字段。对于用来筛选的字段,可以使用-F参数来查看所有可以用来过滤的值,例如journalctl -F _PID

按优先级

操作系统提供了从0 (emerg) 到 7 (debug) 一共7个级别的日志,可以配合-p参数分别查看对应级别的日志。

[root@devops-101 ~]# journalctl -p 5 -u kubelet

7个级别的含义为

  • 0: emerg
  • 1: alert
  • 2: crit
  • 3: err
  • 4: warning
  • 5: notice
  • 6: info
  • 7: debug

1.5 调整显示输出

默认情况,journal输出进入分页模式,用户可以在终端上调整显示的内容,如果要不需要分页,需要加上--no-pager参数。

以Json格式输出

[root@devops-101 ~]# journalctl -p 5 --no-pager -o json

通过-o参数,可以设置为json格式输出,这对于其他接收json格式的日志分析工具非常友好。

[root@devops-101 ~]# journalctl -p 5 --no-pager -o json-pretty

使用json-pretty则对于管理员查看日志非常易读。

支持的各种格式如下:

  • cat: 只显示信息字段本身。
  • export: 适合传输或备份的二进制格式。
  • json: 标准JSON,每行一个条目。
  • json-pretty: JSON格式,适合人类阅读习惯。
  • json-sse: JSON格式,经过打包以兼容server-sent事件。
  • short: 默认syslog类输出格式。
  • short-iso: 默认格式,强调显示ISO 8601挂钟时间戳。
  • short-monotonic: 默认格式,提供普通时间戳。
  • short-precise: 默认格式,提供微秒级精度。
  • verbose: 显示该条目的全部可用journal字段,包括通常被内部隐藏的字段。

1.6 活动日志跟踪

journalctl也支持类似tail的功能,如通过-n参数指定显示最近的多少行,默认为10行,通过-f参数持续监控日志输出。

2. 维护

2.1 查看日志占用的磁盘空间

[root@devops-101 ~]# journalctl --disk-usage
Archived and active journals take up 8.0M on disk.

2.2 设置日志占用的空间

root@devops-101 ~]# journalctl --vacuum-size=500M
Vacuuming done, freed 0B of archived journals on disk.

2.3 设置日志保存的时间

[root@devops-101 ~]# journalctl --vacuum-time=1month
Vacuuming done, freed 0B of archived journals on disk.

3. 配置

上面的一些维护动作,也可以通过配置参数设置,配置文件位于/etc/systemd/journald.conf

  • Storage=persistent
  • Compress=yes
  • Seal=yes
  • SplitMode=uid
  • SyncIntervalSec=5m
  • RateLimitInterval=30s
  • RateLimitBurst=1000
  • SystemMaxUse=
  • SystemKeepFree=
  • SystemMaxFileSize=
  • RuntimeMaxUse=
  • RuntimeKeepFree=
  • RuntimeMaxFileSize=
  • MaxRetentionSec=
  • MaxFileSec=1month
  • ForwardToSyslog=yes
  • ForwardToKMsg=no
  • ForwardToConsole=no
  • ForwardToWall=yes
  • TTYPath=/dev/console
  • MaxLevelStore=debug
  • MaxLevelSyslog=debug
  • MaxLevelKMsg=notice
  • MaxLevelConsole=info
  • MaxLevelWall=emerg

参考资料:

  1. journal详细介绍

Linux系统管理员应该知道的journalctl知识的更多相关文章

  1. 系统管理员应该知道的20条Linux命令

    如果您的应用程序不工作,或者您希望在寻找更多信息,这 20 个命令将派上用场. 在这个全新的工具和多样化的开发环境井喷的大环境下,任何开发者和工程师都有必要学习一些基本的系统管理命令.特定的命令和工具 ...

  2. 系统管理员应该知道的 20 条 Linux 命令

    如果您的应用程序不工作,或者您希望在寻找更多信息,这 20 个命令将派上用场. 在这个全新的工具和多样化的开发环境井喷的大环境下,任何开发者和工程师都有必要学习一些基本的系统管理命令.特定的命令和工具 ...

  3. 新手指南: Linux 新手应该知道的 26 个命令

    当你进入了 Linux 的世界,在下载.安装 了某个 Linux 发行版,体验了 Linux 桌面并安装了一些你喜爱和需要的软件之后,应该去了解下 Linux 真正的魅力所在:命令行.每一个 Linu ...

  4. Linux 新手应该知道的 26 个命令

    https://linux.cn/article-6160-1.html 当你进入了 Linux 的世界,在下载.安装 了某个 Linux 发行版,体验了 Linux 桌面并安装了一些你喜爱和需要的软 ...

  5. 前端工程师应该知道的yarn知识

    yarn 是在工作中离不开的工具,但在工作中,很多人基本只会使用 yarn install,而且会手动删除 node-modules,或删除 yarn.lock 文件等不规范操作.本文将从一些基础的知 ...

  6. Linux 用户必须知道的 14 个常用 Linux 终端快捷键

    简介:以下是一些每个 Linux 用户必须使用的键盘快捷键. 使用命令行时,这些 Linux 快捷键将提升你的工作效率和效率. 你知道什么把专业用户和普通用户分开的吗?掌握键盘快捷键. 好的!这虽不是 ...

  7. Spring Boot 学习前你应该知道的 Maven 知识

    Maven 是什么? 回答这个问题,我们先来了解下没有Maven,我们是怎么使用开发者工具IDE去开发Java程序的.我之前开发Java程序不多,但是我还是记得,我是从网上下载或从合作方拷贝 jar ...

  8. 每个开发人员都应该知道的WebSockets知识

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://blog.bitsrc.io/deep-dive-into-websockets- ...

  9. 前端必须知道的 Nginx 知识

    Nginx一直跟我们息息相关,它既可以作为Web 服务器,也可以作为负载均衡服务器,具备高性能.高并发连接等. 1.负载均衡 当一个应用单位时间内访问量激增,服务器的带宽及性能受到影响, 影响大到自身 ...

随机推荐

  1. 1. let 和 const 命令

    一.简单认识 1. 用let来声明变量,变量作用域就在{}(块级作用域)中 2. 用const声明变量,变量值不可更改 3. 增加了let以后,在声明变量时应该多考虑一下变量的用途,是否希望只在当前代 ...

  2. HTML标签播放MP4视频

    1.使用 <object> 标签播放视频 <object width="500" height="300" data="http:/ ...

  3. Struts2的常见的配置文件介绍

    1:package 定义一个包. 包作用,管理action. (通常,一个业务模板用一个包) 常见属性及其说明:  (1)name  包的名字:以方便在其他处引用此包,此属性是必须的. 包名不能重复: ...

  4. S2750&S5700&S6700 V200R003(C00&C02&C10) MIB参考

    https://support.huawei.com/enterprise/docinforeader.action?contentId=DOC1000027337&idPath=791971 ...

  5. Zbrush Topogun 备忘

    ====Zbrush==== 1.按住shift 在空白地方移动鼠标左键 就会去到正交视图 2.shift+F可以看一下布线的情况 3.按住shift 点一下画布,松开shift键,就可以旋转画布 4 ...

  6. BZOJ3514 Codechef MARCH14 GERALD07加强版 LCT

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ3514 题意概括 N个点M条边的无向图,询问保留图中编号在[l,r]的边的时候图中的联通块个数. N ...

  7. kruskal证明

    Kruskal算法证明   易证,对于一个无向加权连通图,总是存在一棵或以上的有限课生成树,而这些生成树中肯定存在至少一棵最小生成树.下面证明Kruskal算法构造的生成树是这些最小生成树中的一棵. ...

  8. muduo网络库架构总结

    目录 muduo网络库简介 muduo网络库模块组成 Recator反应器 EventLoop的两个组件 TimerQueue定时器 Eventfd Connector和Acceptor连接器和监听器 ...

  9. BZOJ 4805: 欧拉函数求和 杜教筛

    https://www.lydsy.com/JudgeOnline/problem.php?id=4805 给出一个数字N,求sigma(phi(i)),1<=i<=N https://b ...

  10. 洛谷.1782.旅行商的背包(背包DP 单调队列)

    题目链接(卡常背包) 朴素的多重背包是: \(f[i][j] = \max\{ f[i-1][j-k*v[i]]+k*w[i] \}\),复杂度 \(O(nV*\sum num_i)\) 可以发现求\ ...