systemd 之 journalctl
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奋斗点滴对您有所帮助,请通过赞赏鼓励我坚持下去。
systemd 之 journalctl的更多相关文章
- systemd的作用
早上群上讨论了一下systemd的作用,还导致了一个人的直接退群,出于求知心理,搜索了一些systemd,对此也作出了一些相应的整理: 一.systemd的诞生: 学习嵌入式bootloader与ke ...
- ubuntu 安装Elasticsearch5.0(Debian包)
通过Debian包安装Elasticsearch Elasticsearch的Debian包可以从downloaded from our website或APT repository 它可以用于在任何 ...
- linux commands
abrt-cli --since ;查看abrt捕捉的异常 alias ;别名,alias rm='rm -i':使用“ \rm ” 使用原命令 alsamixer ;图形音量调节,q 增加左声道, ...
- 谈一下Docker与Kubernetes集群的日志和日志管理
本文的测试环境为CentOS 7.3,Kubernetes集群为1.11.2,安装步骤参见kubeadm安装kubernetes V1.11.1 集群 日志对于我们管理Kubernetes集群及其上的 ...
- Linux 下的 netfilter 认识与常规操作
Linux 下的 netfilter 认识与常规操作 前言 博客写到今天,1年7个月.可是包含所有写作经历,这个时间线可以达到三年. 上次更新了一篇 "镇站之宝" ,也是本站阅读量 ...
- The All-in-One Note
基础 操作系统 I/O 模型 阻塞式 I/O 模型(blocking I/O) 描述:在阻塞式 I/O 模型中,应用程序在从调用 recvfrom 开始到它返回有数据报准备好这段时间是阻塞的,recv ...
- 安装KubeSphere
1. KubeSphere 是什么 1.1. 官方解释 KubeSphere是一个分布式操作系统,提供以Kubernetes为核心的云原生堆栈,旨在成为第三方应用程序的即插即用架构,以促进其生态系统的 ...
- linxu 查看运行日志
journalctl - 检索 systemd 日志 journalctl 可用于检索 systemd(1) 日志(由 systemd-journald.service(8) 记录). 如果不带任何参 ...
- Linux Hardening Guide
文章转载自:https://madaidans-insecurities.github.io/guides/linux-hardening.html 1. Choosing the right Lin ...
随机推荐
- Spring Boot 解决方案 - JUnit 测试
简单的 JUnit 项目 回顾一下创建并运行简单的 JUnit 测试项目,先添加 JUnit 依赖然后编写类似如下模板的测试类,使用 IDE 的话直接用插件运行就行, 使用 Maven 的话运行命令 ...
- zoj 2060 Fibonacci Again(fibonacci数列规律、整除3的数学特性)
题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2060 题目描述: There are another kind ...
- .6-浅析express源码之Router模块(2)-router.use
这一节继续深入Router模块,首先从最常用的use开始. router.use 方法源码如下: proto.use = function use(fn) { var offset = 0; var ...
- MVC的注意事项及开发技巧
演示产品源码下载地址:http://www.jinhusns.com
- C#编译和运行过程图例
一张图,描述C#编译和运行过程,比较容易记忆理解
- VS2017 IIS 部署.net core web项目
1.点击IIS,查看模块 查看是否安装了 AspNetCoreModule 模块,如果没有安装可下载:https://dotnet.microsoft.com/download 下载安装后,即可部署项 ...
- 乐字节-Java8新特性之Optional
上一篇小乐带大家了解了Java新特性之Stream,接下来将会继续述说Java新特性之Optional Optional<T>类(java.util.Optional)是一个容器类,代表一 ...
- mongdb基本操作和更新操作
1.创建数据库 use hqj 不会真正的创建db,只有insert之后才会创建2.查看数据库show dbs3.插入文档db.hqj.insert({name:'111'})4.查看所有的文档sho ...
- 设计模式之工厂模式(Factory)(3)
在面向对象编程中,最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下,new操作符直接生成对象会带来一些问题.举例来说,许多类型对象的创造需要一系列的 ...
- apache2.4.33伪静态配置入门教程(1)
伪静态: 把动态网页的请求方式伪装成静态网页 要使用伪静态技术,要在httpd.conf中启用伪静态模块: LoadModule rewrite_module modules/mod_rewrite. ...