centos7开始j系统使用2个日志服务用于系统日志,一个服务是systemd-journald,这个服务把日志存放到内存中。另一个服务是rsyslogd,它可以从systemd-journald获取日志并把日志存放在磁盘上。journalctl命令主要开始承担了查看日志还有一些日志的配置功能,经常需要用到这个命名去查看日志和设置日志的一些参数。借用他山之石(系统centos7,腾讯云cvm,故日志中会有qcloud ntp还有云监控agent的一些log)总结一下:
日志中就拆解的话就这几部分吧:
通过上面这个日志的截图大家应该能发现很多问题,以及自己想扩散的,比如说:
注: 当然了 还有更高级的玩法,比如 我改如何将日志采集起来到elastic或者其他工具,进行更好的分析?(这个就先忽略了)
关于 journalctl 命令:
格式: journalctl + 参数 #日志的查看
具体参数的含义:
-p err #查看报错日志
-f #监控 (用户ctrl+c结束监控)
-n 3 #最新(new)的三条日志
-o verbose #查看日志详细参数
journalctl _PID=84 #直接查看PID为84的程序产生的日志
--since 时间点 --until 时间点 #查看从何时到何时的日志
一步一步来了
journalctl --vacuum-size=20M
设置journal 日志最大为20M不保留不必要日志。
journalctl --vacuum-time=1w
设置journal 日志只保留近一周的日志。
root@VM_0_14_centos systemd# journalctl --disk-usage
Archived and active journals take up 64.0M on disk.
设置了20M为什么还能大于20M? 有65M呢?这个问题没有搞明白。不知道是不是有所最小的限制参数?有知道的大佬可以给解答一下。
一周的日志要大于这个数的 貌似就从 2.4号开始了。使用了两个条件应该是两个取所交集的。故开始时间忽略吧
journalctl -u +模块的名字
(这台服务器上面的日志是自己输出到自己log的并没有用systemd-journald收集故很多是没有的,
就举个例子。好歹还可以有ssh的日志可以看)
journalctl -u sshd
journalctl -u sshd --since "2021-02-04 23:59" --until "2021-02-05 00:01"
特意加了-u指定服务名字 加上开始和结束时间更能只管看到输出的日志
当然了还有其他各种的用户比如:
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点一个小时段内的日志查看最新的日志
我想看最新的日志,倒序看日志 不想看最早的咋整?
journalctl -r
我想实时打印最新的日志?
journalctl -f
插句嘴 journalctl -u u参数到底是啥?--unit=UNIT 是服务名。
debug #系统调试信息,日志信息最多
info #常规信息,最常用
notice #最具有重要性的普通条件的信息
warning #警告信息
err #报错信息(级别低,阻止了某个工作不能正常工作)
crit #严重报错信息(级别高,阻止了整个软件或整个系统不能正常工作)
alert #需要立即修改的信息
emerg #内核崩溃等严重信息
none #不采集任何日志信息
注意:从上到下,日志级别从低到高。记录的信息越来越少
查看错误日志信息
举个例子: journalctl -p err
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。