前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >journalctl命令-系统调试中一个常用的命令

journalctl命令-系统调试中一个常用的命令

原创
作者头像
对你无可奈何
修改2021-02-05 18:00:35
3.4K0
修改2021-02-05 18:00:35
举报
文章被收录于专栏:运维专栏

centos7开始j系统使用2个日志服务用于系统日志,一个服务是systemd-journald,这个服务把日志存放到内存中。另一个服务是rsyslogd,它可以从systemd-journald获取日志并把日志存放在磁盘上。journalctl命令主要开始承担了查看日志还有一些日志的配置功能,经常需要用到这个命名去查看日志和设置日志的一些参数。借用他山之石(系统centos7,腾讯云cvm,故日志中会有qcloud ntp还有云监控agent的一些log)总结一下:

日志中就拆解的话就这几部分吧:

  1. 时间
  2. 机器名
  3. 产生日志的模块
  4. 用户
  5. 行为

通过上面这个日志的截图大家应该能发现很多问题,以及自己想扩散的,比如说:

  1. 日志的开始是2019年的。存储的日志会不会太大?有什么方式可以现在日志的大小。只保留某一时间段的?
  2. 日志中记录了很多模块的日志,我改怎样去查看某一模块的日志?
  3. 我想查询某一时间段内的日志,比如从某一时间开始?
  4. 我想查询最新的日志,而不是从开始看老的日志,or我想倒着从最新的日志开始看过去的
  5. 另外日志有日志级别吧? 我改怎么按照日志级别过滤我想看到的报错级别的日志?

注: 当然了 还有更高级的玩法,比如 我改如何将日志采集起来到elastic或者其他工具,进行更好的分析?(这个就先忽略了)

关于 journalctl 命令:

代码语言:txt
复制
格式: journalctl + 参数       #日志的查看
具体参数的含义:
 -p   err               #查看报错日志
 -f                     #监控 (用户ctrl+c结束监控)
 -n      3              #最新(new)的三条日志
 -o   verbose           #查看日志详细参数
 journalctl _PID=84     #直接查看PID为84的程序产生的日志
--since  时间点 --until  时间点   #查看从何时到何时的日志

一步一步来了

1. 如何设置日志大小呢?查看了下/var/log/journal目录下文件很大了有4G多呢?

代码语言:txt
复制
journalctl --vacuum-size=20M
设置journal 日志最大为20M不保留不必要日志。
journalctl --vacuum-time=1w
设置journal 日志只保留近一周的日志。
代码语言:txt
复制
root@VM_0_14_centos systemd# journalctl --disk-usage
Archived and active journals take up 64.0M on disk.

设置了20M为什么还能大于20M? 有65M呢?这个问题没有搞明白。不知道是不是有所最小的限制参数?有知道的大佬可以给解答一下。

一周的日志要大于这个数的 貌似就从 2.4号开始了。使用了两个条件应该是两个取所交集的。故开始时间忽略吧

2. 如何查看某一模块的日志?

代码语言:txt
复制
journalctl -u +模块的名字
(这台服务器上面的日志是自己输出到自己log的并没有用systemd-journald收集故很多是没有的,
 就举个例子。好歹还可以有ssh的日志可以看)
journalctl -u sshd 

3. 查询某一时间段内的日志?

代码语言:txt
复制
journalctl -u sshd --since "2021-02-04 23:59" --until "2021-02-05 00:01" 
特意加了-u指定服务名字 加上开始和结束时间更能只管看到输出的日志

当然了还有其他各种的用户比如:

代码语言:txt
复制
journalctl --since yesterday  从昨天到现在的日志?
journalctl --since "2021-02-05 10:20:00"   2021-02-05 10:20:00到现在的日志,是可以不指定结束时间的
journalctl --since 09:00 --until "1 hour ago" 早上九点到10点一个小时段内的日志查看最新的日志

4. 查看最新的日志

代码语言:txt
复制
我想看最新的日志,倒序看日志 不想看最早的咋整?
journalctl -r 
代码语言:txt
复制
我想实时打印最新的日志?
journalctl -f

插句嘴 journalctl -u u参数到底是啥?--unit=UNIT 是服务名。

5. 关于日志的级别

代码语言:txt
复制
debug              #系统调试信息,日志信息最多
info               #常规信息,最常用
notice          #最具有重要性的普通条件的信息
warning            #警告信息
err                #报错信息(级别低,阻止了某个工作不能正常工作)
crit               #严重报错信息(级别高,阻止了整个软件或整个系统不能正常工作)
alert              #需要立即修改的信息
emerg              #内核崩溃等严重信息
none               #不采集任何日志信息
注意:从上到下,日志级别从低到高。记录的信息越来越少
代码语言:txt
复制
查看错误日志信息
举个例子: journalctl -p err

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 如何设置日志大小呢?查看了下/var/log/journal目录下文件很大了有4G多呢?
  • 2. 如何查看某一模块的日志?
  • 3. 查询某一时间段内的日志?
  • 4. 查看最新的日志
  • 5. 关于日志的级别
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档