• Linux journalctl命令


    在Systemd出现之前,Linux系统及各应用的日志都是分别管理的,Systemd开始统一管理了所有Unit的启动日志,这样带来的好处就是可以只用一个 journalctl命令,查看所有内核和应用的日志。

    1. 基础用法

    1.1 查看所有日志(默认显示本次启动的所有日志)

    [root@devops-101 ~]# journalctl

    查看本次启动的所有日志也可以使用

    [root@devops-101 ~]# journalctl -b

    1.2 查看内核日志

    [root@devops-101 ~]# journalctl -k

    1.3 查看指定时间的日志

    通过--since和--until选项,可以过滤任意时间限制,显示指定条件之前、之后或之间的日志。

    [root@devops-101 ~]# journalctl --since="2018-09-21 10:21:00"

    查询一个时间段范围内的日志。

    [root@devops-101 ~]# journalctl --since="2018-09-21 10:21:00" --until="2018-09-21 10:22:00"

    1.4 根据不同的主题进行过滤筛选

    根据服务筛选

    [root@devops-101 ~]# journalctl -u kubelet.service
    [root@devops-101 ~]# journalctl -u kubelet

    根据进程ID查询
    如果进程使用了systemd托管日志,则可以通过以下命令查找进程对应的日志。

    [root@devops-101 ~]# journalctl _PID=1

    Systemd journal 有很多可以用来过滤的字段,可以通过 man systemd.journal-fields 查看所有可以用来过滤的字段。对于用来筛选的字段,可以使用-F参数来查看所有可以用来过滤的值,例如journalctl -F _PID

    按优先级
    操作系统提供了从0 (emerg) 到 7 (debug) 一共7个级别的日志,可以配合-p参数分别查看对应级别的日志。

    [root@devops-101 ~]# journalctl -p 5 -u kubelet

    7个级别的含义为

    • 0: emerg
    • 1: alert
    • 2: crit
    • 3: err
    • 4: warning
    • 5: notice
    • 6: info
    • 7: debug

    1.5 调整显示输出

    默认情况,journal输出进入分页模式,用户可以在终端上调整显示的内容,如果要不需要分页,需要加上--no-pager参数。

    以Json格式输出

    [root@devops-101 ~]# journalctl -p 5 --no-pager -o json

    通过-o参数,可以设置为json格式输出,这对于其他接收json格式的日志分析工具非常友好。

    [root@devops-101 ~]# journalctl -p 5 --no-pager -o json-pretty

    使用json-pretty则对于管理员查看日志非常易读。

    支持的各种格式如下:

    • cat: 只显示信息字段本身。
    • export: 适合传输或备份的二进制格式。
    • json: 标准JSON,每行一个条目。
    • json-pretty: JSON格式,适合人类阅读习惯。
    • json-sse: JSON格式,经过打包以兼容server-sent事件。
    • short: 默认syslog类输出格式。
    • short-iso: 默认格式,强调显示ISO 8601挂钟时间戳。
    • short-monotonic: 默认格式,提供普通时间戳。
    • short-precise: 默认格式,提供微秒级精度。
    • verbose: 显示该条目的全部可用journal字段,包括通常被内部隐藏的字段。

    1.6 活动日志跟踪

    journalctl也支持类似tail的功能,如通过-n参数指定显示最近的多少行,默认为10行,通过-f参数持续监控日志输出。

    2. 维护

    2.1 查看日志占用的磁盘空间

    [root@devops-101 ~]# journalctl --disk-usage
    Archived and active journals take up 8.0M on disk.

    2.2 设置日志占用的空间

    root@devops-101 ~]# journalctl --vacuum-size=500M
    Vacuuming done, freed 0B of archived journals on disk.

    2.3 设置日志保存的时间

    [root@devops-101 ~]# journalctl --vacuum-time=1month
    Vacuuming done, freed 0B of archived journals on disk.

    3. 配置

    上面的一些维护动作,也可以通过配置参数设置,配置文件位于/etc/systemd/journald.conf

    • Storage=persistent
    • Compress=yes
    • Seal=yes
    • SplitMode=uid
    • SyncIntervalSec=5m
    • RateLimitInterval=30s
    • RateLimitBurst=1000
    • SystemMaxUse=
    • SystemKeepFree=
    • SystemMaxFileSize=
    • RuntimeMaxUse=
    • RuntimeKeepFree=
    • RuntimeMaxFileSize=
    • MaxRetentionSec=
    • MaxFileSec=1month
    • ForwardToSyslog=yes
    • ForwardToKMsg=no
    • ForwardToConsole=no
    • ForwardToWall=yes
    • TTYPath=/dev/console
    • MaxLevelStore=debug
    • MaxLevelSyslog=debug
    • MaxLevelKMsg=notice
    • MaxLevelConsole=info
    • MaxLevelWall=emerg

    来自:https://www.cnblogs.com/cocowool/p/systemd_journal_log.html

    参考资料:

    1. journal详细介绍
  • 相关阅读:
    【原】文本图片自适应高度小bug以及解决办法
    【原】iOS学习39网络之数据请求
    【原】iOS学习38网络之数据解析
    iOS数据持久化文件读写之偏好设置
    SQLite错误码
    iOS开发代码规范(通用)
    iOS学习37数据处理之CoreData
    iOS中的单例
    iOS学习36数据处理之SQLite数据库
    UIImage两种初始化的区别
  • 原文地址:https://www.cnblogs.com/luck666/p/10475038.html
Copyright © 2020-2023  润新知