1.简介

  日志管理工具journalctl是centos7上专有的日志管理工具,该工具是从message这个文件里读取信息。

  Systemd统一管理所有Unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。

  日志的配置文件是/etc/systemd/journald.conf。

  如果需要快速查看服务的最新日志,使用下面的命令,不用在往下看了。

journalctl -f -u <服务名>

2.查看所有日志

(默认情况下 ,只保存本次启动的日志)
journalctl

3.查看内核日志

(默认情况下 ,只保存本次启动的日志)
journalctl -k

4.查看系统本次启动的日志

journalctl -b
或者
journalctl -b -0
或者
journalctl -b 0

5.查看上一次启动的日志


需更改设置/etc/systemd/journald.conf文件,以开启永久存储。
journalctl -b -1

  要查看journald知道的引导,请使用以下--list-boots选项:

journalctl --list-boots
-1 00d066e11cbee123b5 Thu 2018-02-22 17:01:47 CST—Thu 2018-02-22 17:09:15 CST
0 63f75abbe94c3b5710 Thu 2018-02-22 17:09:10 CST—Thu 2018-02-22 17:10:19 CST

  这将为每次启动显示一行。第一列是启动的偏移量,可用于轻松引用启动journalctl。

  如果您需要绝对参考,则启动ID位于第二列。您可以通过在结束时列出的两个时间规范来指出引导会话引用的时间。

6.查看指定时间的日志

  可以使用--since和--until选项过滤任意时间限制,这些限制分别显示给定时间之前或之后的条目。

  可以使用“yesterday”、“today”、“tomorrow”或者“now”等表达。

  另外,我们也可以使用“-”或者“+”设定相对值,或者使用“ago”之前的表达。

#"显示2017年10月30号,18点10分30秒到当前时间之间的所有日志信息"
journalctl --since="2017-10-30 18:10:30" #获取昨天的日志如下:
journalctl –since yesterday #获取某一个时间段到当前时间的前一个小时的日志
journalctl --since 09:00 --until "1 hour ago" #获取当前时间的前20分钟的日志
journalctl --since "20 min ago" #获取某一天到某一个时间段的日志信息
journalctl --since "2017-01-10" --until "2017-01-11 03:00" #获取15:15到现在的日志
journalctl --since"15:15" --until now

7.按服务过滤消息日志

#查看httpd服务的日志信息
journalctl -u httpd.service
-- Logs begin at Thu 2018-02-22 17:01:47 CST, end at Thu 2018-02-22 17:30:01 CST. --
Feb 22 17:29:27 centos7.localdomain systemd[1]: Starting The Apache HTTP Server...
Feb 22 17:29:27 centos7.localdomain httpd[1610]: AH00558: httpd: Could not reliably determine t
Feb 22 17:29:28 centos7.localdomain systemd[1]: Started The Apache HTTP Server. #查看httpd服务当天的运行状况
journalctl -u httpd.service --since today

8.按进程、用户或者群组ID

#通过进程ID实现查询,需要指定_PID字段。
journalctl _PID=8088 #查看指定用户的日志
journalctl _UID=33 --since today #查看指定用户组的日志
journalctl _GID=20 --since today #显示尾部的最新10行日志
journalctl -n #显示尾部指定行数的日志
journalctl -n 20 #实时滚动显示最新日志
journalctl -f #查看指定服务的日志
journalctl /usr/lib/systemd/systemd #查看某个路径的脚本的日志
journalctl /usr/bin/bash #实时滚动显示某个Unit的最新日志
journalctl -u nginx.service -f #合并显示多个Unit的日志
journalctl -u nginx.service -u php-fpm.service --since today

9.按优先级

  使用journalctl配合-p选项显示特定优先级的信息,从而过滤掉优先级较低的信息。

由最高到最低优先级:
0: emerg
1: alert
2: crit
3: err
4: warning
5: notice
6: info
7: debug
只显示错误级别或者更高的日志条目:
[root@centos7 ~]# 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)
或者[root@centos7 ~]# journalctl -p 3 -b

10.输出格式

#journal能够以多种格式进行显示,只须添加-o选项加格式说明即可。
#将journal条目输出为JSON格式:
[root@CENTOS7 proc]# journalctl -b -u httpd -o json
{ "__CURSOR" : "s=54b7b8c9391c4489a9a206c9123e723b;i=7db;b=b2d84e8bf26a462e9639384e1c0be5cf;m=eddf635;t=5b3a0187d82cb;x=90ce86876890254e", "__REALTIME_TIMESTAMP" : "160
{ "__CURSOR" : "s=54b7b8c9391c4489a9a206c9123e723b;i=7f2;b=b2d84e8bf26a462e9639384e1c0be5cf;m=ee4987b;t=5b3a018842511;x=a984025285f8f913", "__REALTIME_TIMESTAMP" : "160
{ "__CURSOR" : "s=54b7b8c9391c4489a9a206c9123e723b;i=7f3;b=b2d84e8bf26a462e9639384e1c0be5cf;m=ee5a191;t=5b3a018852e27;x=c0c8530ea7133468", "__REALTIME_TIMESTAMP" : "160
#使用json-pretty格式以更好地处理数据结构
[root@CENTOS7 proc]# journalctl -u httpd -o json-pretty
{
"__CURSOR" : "s=54b7b8c9391c4489a9a206c9123e723b;i=7db;b=b2d84e8bf26a462e9639384e1c0be5cf;m=eddf635;t=5b3a0187d82cb;x=90ce86876890254e",
"__REALTIME_TIMESTAMP" : "1604875070571211",
"__MONOTONIC_TIMESTAMP" : "249427509",
"_BOOT_ID" : "b2d84e8bf26a462e9639384e1c0be5cf",
"PRIORITY" : "6",
"_UID" : "0",
"_GID" : "0",
"_MACHINE_ID" : "9e19325de3e04e56b869967ea97e8dae",
"SYSLOG_FACILITY" : "3",
"SYSLOG_IDENTIFIER" : "systemd",
"_TRANSPORT" : "journal",
"_PID" : "1",
"_COMM" : "systemd",
"_EXE" : "/usr/lib/systemd/systemd",
"_CAP_EFFECTIVE" : "1fffffffff",
"_SYSTEMD_CGROUP" : "/",
"CODE_FILE" : "src/core/unit.c",
"CODE_LINE" : "1417",
"CODE_FUNCTION" : "unit_status_log_starting_stopping_reloading",
"MESSAGE_ID" : "7d4958e842da4a758f6c1cdc7b36dcc5",
"_HOSTNAME" : "CENTOS57",
"_CMDLINE" : "/usr/lib/systemd/systemd --switched-root --system --deserialize 21",
"UNIT" : "httpd.service",
"MESSAGE" : "Starting The Apache HTTP Server...",
"_SOURCE_REALTIME_TIMESTAMP" : "1604875070570852"
}
以下为可用于显示的各类格式:
cat: 只显示信息字段本身。
export: 适合传输或备份的二进制格式。
json: 标准JSON,每行一个条目。
json-pretty: JSON格式,适合人类阅读习惯。
json-sse: JSON格式,经过打包以兼容server-sent事件。
short: 默认syslog类输出格式。
short-iso: 默认格式,强调显示ISO 8601挂钟时间戳。
short-monotonic: 默认格式,提供普通时间戳。
short-precise: 默认格式,提供微秒级精度。
verbose: 显示该条目的全部可用journal字段,包括通常被内部隐藏的字段。

11.Journal维护

#查看当前日志占用磁盘的空间的总大小
[root@centos7 ~]# journalctl --disk-usage
Archived and active journals take up 8.0M on disk. #指定日志文件最大空间
journalctl --vacuum-size=1G #指定日志文件保存多久
journalctl --vacuum-time=1years #1年
journalctl --vacuum-time=2d #2天
journalctl --vacuum-size=500M #500M #不分页标准输出,日志默认分页输出--no-pager改为正常的标准输出
journalctl --no-pager #分页显示,其中插入省略号以代表被移除的信息,使用–no-full选
journalctl --no-full #检查日志是否如常?日志文件是否完好且未损坏?
journalctl --verify

12.启用日志消息的持久存储

  要启用日志限制持久性配置,你可以修改journald的配置文件

 /etc/systemd/journald.conf

  将该Storage=选项设置为“persistent”以启用持久记录。

  Storge选项为:

    • volatile,则日记日志数据将仅存储在内存中,即/run/log/journal中。
    • persistent,则数据将最好存储在磁盘上,即在/var/log/journal的下方。
    • auto,类似于“ persistent”,但是如果需要的话不会创建目录/var/log/journal,因此它的存在控制着日志数据的去向。
[root@CENTOS7 proc]#  vim  /etc/systemd/journald.conf

[Journal]
Storage=persistent

  默认journalctl的日志都是保存到内存中。要保存到文件,只需创建/var/log/journal目录,重启journald服务即可。

在CentOS 7上,您必须启用日志消息的持久存储:

[root@CENTOS7 proc]# mkdir /var/log/journal
[root@CENTOS7 proc]# systemd-tmpfiles --create --prefix /var/log/journal
[root@CENTOS7 proc]# systemctl restart systemd-journald 否则,启动之间将不会保留日志日志消息。
journalctl相关配置
以下条目可用于限定journal体积的膨胀速度:
SystemMaxUse=: 指定journal所能使用的最高持久存储容量。
SystemKeepFree=: 指定journal在添加新条目时需要保留的剩余空间。
SystemMaxFileSize=: 控制单一journal文件大小,符合要求方可被转为持久存储。
RuntimeMaxUse=: 指定易失性存储中的最大可用磁盘容量(/run文件系统之内)。
RuntimeKeepFree=: 指定向易失性存储内写入数据时为其它应用保留的空间量(/run文件系统之内)。
RuntimeMaxFileSize=: 指定单一journal文件可占用的最大易失性存储容量(/run文件系统之内)。
通过设置上述值,大家可以控制journald对服务器空间的消耗及保留方式。

CentOS7日志管理工具 journalctl的更多相关文章

  1. Centos7 日志查看工具

    1  概述     日志管理工具journalctl是centos7上专有的日志管理工具,该工具是从message这个文件里读取信息.Systemd统一管理所有Unit的启动日志.带来的好处就是,可以 ...

  2. Java程序员须知的七个日志管理工具(转)

    Splunk vs. Sumo Logic vs. LogStash vs. GrayLog vs. Loggly vs. PaperTrails vs. Splunk>Storm 英文原文:T ...

  3. LogCook 一个简单实用的Android日志管理工具

    众所周知,日志的管理是软件系统很重要的一部分,千万不可忽略其重要性.完整的日志将会在系统维护中起着异常重要的作用,就好像磨刀不误砍柴工一样,日志就像对系统进行分析的工具,工具便捷了,对系统分析起来就能 ...

  4. 日志管理工具之logrotate

    Logrotate配置和测试 logrotate软件是一个日志管理工具,用于非分隔日志,删除旧的日志文件,并创建新的日志文件,起到“转储作用”,可以为系统节省磁盘空间.logrotate是基于cron ...

  5. mysql 开发进阶篇系列 33 工具篇(mysqlbinlog日志管理工具)

    一.概述 由于服务器生成的二进制日志文件以二进制格式保存,所以如果要想检查这些文件的文本格式,就会用到mysqlbinlog日志管理工具. mysqlbinlog的语法如下: mysqlbinlog ...

  6. 系统自带的日志管理工具-rsyslogd

    系统自带的日志管理工具-rsyslogd 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.日志管理简介 1.什么是日志 系统日志是记录系统中硬件.软件和系统问题的信息,同时还可以 ...

  7. Java程序员须知的七个日志管理工具

    本文由 ImportNew - 赖 信涛 翻译自 takipiblog.欢迎加入翻译小组.转载请见文末要求. Splunk vs. Sumo Logic vs. LogStash vs. GrayLo ...

  8. web项目中日志管理工具的使用

    在web项目中,很多时候会用到日志管理工具,常见的日志管理用具有:JDK logging(配置文件:logging.properties) 和log4j(配置文件:log4j.properties) ...

  9. logrotate日志管理工具与split文件切割命令

    概述 logrotate是一个Linux系统默认安装了的日志文件管理工具,用来把旧文件轮转.压缩.删除,并且创建新的日志文件.我们可以根据日志文件的大小.天数等来转储,便于对日志文件管理. logro ...

随机推荐

  1. QT 资源链家暂存

    1.Qt右击菜单栏中文化 链接:https://blog.csdn.net/yangxiao_0203/article/details/7488967

  2. Ubuntu 20.04 版本安装

    Ubuntu 20.04 版本安装 安装步骤 首先创建好Ubuntu 20.04虚拟机 等待系统检查完整性 选择语言 选择不更新,回车确定 键盘语言默认即可 网卡IP配置 设置代理服务器 设置源 自定 ...

  3. 附: Python爬虫 数据库保存数据

    原文 1.笔记 #-*- codeing = utf-8 -*- #@Time : 2020/7/15 22:49 #@Author : HUGBOY #@File : hello_sqlite3.p ...

  4. Ansible_常用模块

    一.Ansible常用模块 1.ansible常用模块command.shell.raw的区别: command模块不是调用的shell的指令,所以没有bash的环境变量 shell模块调用的/bin ...

  5. Jinja2模板概述

    例子一 循环语句 [root@m01 ~]# cat upstream.conf upstream web { {% for i in range(1,11) %} server 172.16.1.{ ...

  6. linux进阶之子网划分

    一.定义 当我们对一个网络进行子网划分时,基本上就是将它分成小的网络.比如,当一组IP地址指定给一个公司时,公司可能将该网络"分割成"小的网络,每个部门一个.这样,技术部门和管理部 ...

  7. 【遥感数字图像处理实验】Erdas版详细图文实验教程(8实验全)

    @ 目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 遥感数字图像的处理,是对遥感数字图像的计算机处理.与工业和医学数字图像不同,遥感数字图像类型更为多样,内容更为复杂.因此,遥感 ...

  8. 动态更换animator的animatorcontroller

    你可以这样 Animator animator = this.gameObject.GetComponent<Animator>(); animator.runtimeAnimatorCo ...

  9. ELK技术栈之-Logstash详解

    ELK技术栈之-Logstash详解   前言 在第九章节中,我们已经安装好Logstash组件了,并且启动实例测试它的数据输入和输出,但是用的是最简单的控制台标准输入和标准输出,那这节我们就来深入的 ...

  10. 前端工具 | JS编译器Monaco使用教程

    前言 我的需求是可以语法高亮.函数提示功能.自动换行.代码折叠 Monaco Monaco是微软家的,支持的语言很多,还有缩略地图,有时候提示不好用然后包体很大. The Monaco Editor ...