参考链接:
sparkdev
1. journalctl公用命令显示所有日志。 默认情况下,仅保存这次启动的日志。)
日志CTL显示内核日志(不显示APP应用程序日志)
journalctl -k查看这次系统启动的日志
日记帐CTL-b显示上次启动的日志(需要更改设置)
在“日志”部分中,将此存储=选项设置为“永久”以启用永久记录。
如果在vim/etc/systemd/journald.conf . [ journal ] storage=永久服务器上启用了保存以前的引导,则journalctl将引导用作分区单元要查看journald知道的引导,请使用以下list-boots选项journalctl :
$ journal CTL-- list-boots-100 d 066 e 11 CB 3412 a 912 CB 804 CEE 123 b5 thu 2018-02-2217336001336047 CST-thu 2018-02-221733333333 6010 CST-thu 2018-02-2217336010336019 CST这在每次启动时显示一行。 第一列是启动偏移,便于浏览启动日记帐CTL。 如果需要绝对引用,则启动ID位于第二列。 退出时列出的两个时间规范允许您指定引导会话引用的时间。
2 .使用时间限制过滤日记中的数据。 例如,要查看上次启动的日志,请使用标记为-1的-b的相对指针。
$ journalctl -b -1显示指定时间的日志
可以使用-since和-until选项过滤任何时间限制。 这些限制显示指定时间之前或之后的条目。
例显示2017年10月30日、18时10分30秒至当前时刻的所有日志信息”
$ journal CTL-- since=' 2017-10-3018336010336030 '此外,journal还可以理解某些相对值和命名的缩写。 例如,大家可以使用“yesterday”、“today”、“tomorrow”或“now”等表达方式。 也可以使用“-”或“”设置相对值,或使用“ago”之前的表示形式。
例如,昨天的日志获取如下:
日志CTLsince yesterday获取从一个时间段到当前时间前一个小时的日志
日志CTL---- since 09336000---- until '1hourago '获取当前时间前20分钟的日志
日记帐CTL-- since ' 20 min ago '获取从一天到一段时间的日志信息
日记账CTL-- since ' 2017-01-10 '--until ' 2017-01-110:00 '3.根据服务或组件选择过滤器- u选项进行过滤
例如,查看httpd服务日志信息
$ journal CTL-uhttpd.service-- logsbeginatthu 2018-02-2217336001336047 CST, endatthu 2018-02-22173360:01 CST---- feb 2217336029336027 centos7. localdomainsystemd [1] 3360 startingtheapachehttpserver . feb 2217336029336027 centos7. local domain httpd [ 1610 ] 3360 ah 00558: httpd : couldnotreliablydeterminetfeb 2217336029336028 centos7. localdomainsystemd [1] 3: startedtheaplytheaplplplpld
按日志CTL-uhttpd.service-- since today进程、用户或组ID
由于某些服务包含多个子进程,因此在使用进程ID实现查询时,还可以使用相关的过滤机制。
此处必须指定_PID字段。 例如,如果PID为8088,则可以输入:
journalctl _PID=8088可能会显示来自特定用户或组的所有日志条目。 这需要使用_UID或_GID。 例如,如果Web服务器在www-data用户下运行,则可以按照这种方式找到用户ID。
$ ID -u www-data33然后,可以返回使用此id过滤的日记账结果。
journal CTL _ uid=33-- sincetodayjournalctl结合-p选项显示特定优先级的信息,以过滤低优先级的信息。
例如,仅显示错误级别以上的日志条目。
$ journalctl -p err -b -- Logs begin
at Thu 2018-02-22 17:01:47 CST, end at Thu 2018-02-22 17:40:02 CST. -- Feb 22 17:09:10 centos7.localdomain kernel: sd 0:0:0:0: [sda] Assuming drive cache: write throu Feb 22 17:09:12 centos7.localdomain kernel: piix4_smbus 0000:00:07.3: SMBus Host Controller not Feb 22 17:09:15 centos7.localdomain rsyslogd[593]: error during parsing file /etc/rsyslog.conf, Feb 22 17:09:47 centos7.localdomain pulseaudio[1232]: [alsa-sink-ES1371/1] alsa-sink.c: ALSA wo Feb 22 17:09:47 centos7.localdomain pulseaudio[1232]: [alsa-sink-ES1371/1] alsa-sink.c: Most li Feb 22 17:09:47 centos7.localdomain pulseaudio[1232]: [alsa-sink-ES1371/1] alsa-sink.c: We were Feb 22 17:09:48 centos7.localdomain spice-vdagent[1274]: Cannot access vdagent virtio channel / lines 1-8/8 (END)这将只显示被标记为错误、严重、警告或者紧急级别的信息。Journal的这种实现方式与标准syslog信息在级别上是一致的。大家可以使用优先级名称或者其相关量化值。以下各数字为由最高到最低优先级:
0: emerg
1: alert
2: crit
3: err
4: warning
5: notice
6: info
7: debug
例如:
$ journalctl -p 3 -b -- Logs begin at Thu 2018-02-22 17:01:47 CST, end at Thu 2018-02-22 17:50:01 CST. -- Feb 22 17:09:10 centos7.localdomain kernel: sd 0:0:0:0: [sda] Assuming drive cache: write throu Feb 22 17:09:12 centos7.localdomain kernel: piix4_smbus 0000:00:07.3: SMBus Host Controller not Feb 22 17:09:15 centos7.localdomain rsyslogd[593]: error during parsing file /etc/rsyslog.conf, 4. 修改journal显示内容分页显示(默认)或者改为正常标准输出
分页显示,其中插入省略号以代表被移除的信息,使用–no-full选
. . .
大家也可以要求其显示全部信息,无论其是否包含不可输出的字符。具体方式为添加-a标记:
journalctl -a
默认情况下,journalctl会在pager内显示输出结果以便于查阅。如果大家希望利用文本操作工具对数据进行处理,则可能需要使用标准格式。在这种情况下,我们需要使用–no-pager选项:
这样就可以用一些工具过滤出自己感兴趣的信息了
5. 输出格式如果大家需要对journal条目进行处理,则可能需要使用更易使用的格式以简化数据解析工作。幸运的是,journal能够以多种格式进行显示,只须添加-o选项加格式说明即可。
例如,我们可以将journal条目输出为JSON格式:
以下为可用于显示的各类格式:
cat: 只显示信息字段本身。 export: 适合传输或备份的二进制格式。 json: 标准JSON,每行一个条目。 json-pretty: JSON格式,适合人类阅读习惯。 json-sse: JSON格式,经过打包以兼容server-sent事件。 short: 默认syslog类输出格式。 short-iso: 默认格式,强调显示ISO 8601挂钟时间戳。 short-monotonic: 默认格式,提供普通时间戳。 short-precise: 默认格式,提供微秒级精度。 verbose: 显示该条目的全部可用journal字段,包括通常被内部隐藏的字段。活动进程监控
Journalctl命令还能够帮助管理员以类似于tail的方式监控活动或近期进程。这项功能内置于journalctl当中,允许大家在无需借助其它工具的前提下实现访问。
显示近期日志
要显示特定数量的记录,大家可以使用-n选项,类似为tail -n功能。默认情况下只显示最后发生的10条日志,但是也可以指定。
例如:
要主动追踪当前正在编写的日志,大家可以使用-f标记。同样功能类似为tail -f,只要不终止,会一直监控
$ journalctl -f 7. Journal维护存储这么多数据当然会带来巨大压力,因此我们还需要了解如何清理部分陈旧日志以释放存储空间。
查看当前日志占用磁盘的空间的总大小
指定日志文件最大空间
journalctl --vacuum-size=1G指定日志文件保存多久
journalctl --vacuum-time=1years 8. journalctl相关配置大家可以配置自己的服务器以限定journal所能占用的最高容量。要实现这一点,我们需要编辑/etc/systemd/journald.conf文件。
以下条目可用于限定journal体积的膨胀速度: