前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >journalctl 日志分析工具

journalctl 日志分析工具

作者头像
Kevin song
发布2024-02-22 14:54:37
1710
发布2024-02-22 14:54:37
举报

journalctl 是一个用于查询和显示从systemd 日志管理系统(systemd-journald 服务)收集的日志的工具。journalctl 内置了日志旋转功能(logrotate)同时具备丰富的过滤能力,可以查看所有systemd 服务单元的日志,帮助用户快速的定位日志信息。

systemd-journald 守护进程是一个系统服务,它将日志数据整合到一起并进行存储。Journal中的条目可能来自多个来源,包括服务器消息,用户层程序消息,syslogd收集的内核消息等。另外,journal条目也来自系统的服务信息,例如生成的错误信息或者启动时的信息。

systemd-journald 系统日志组件

  • 守护程序:systemd-journald
  • 配置文件:/etc/systemd/journald.conf
  • 日志搜索程序:journalctl

默认情况下 journald 会在每次重启时覆盖其日志。rsyslog 通过加载 journal 驱动来获取日志并将日志保存到硬盘上(/var/log/messages)文件中。

journald 持久化存储日志需要修改journald.conf 文件"Storage=auto"参数。修改Storage=persistent ,重启 systemd-journald 服务

代码语言:javascript
复制
sed -i 's/Storage=auto/Storage=persistent/g' /etc/systemd/journald.conf
systemctl restart systemd-journald

systemd-journald 存储类型

systemd-journald存储类型在journald.conf 配置文件中,在 [Journal] 部分修改存储类型。支持包括 "volatile", "persistent", "auto" 和 "none"。默认storage 类型为 "auto"。

  • volatile:journal的日志数据仅被保存在内存中,如/run/log/journal
  • persistent:数据将会保存在磁盘,如/var/log/journal,如果磁盘不可写入,早期启动日志将会退回到 /run/log/journal。
  • auto:在(/var/log/journal/)目录下存储journal日志 (/var/log/journal/) 目录必须已经存在且有合适的权限值,如果目录不存在,journal数据将被保存在 /run/log/journal/ 目录,当系统被关闭的时候数据将被擦除。
  • none: 会关闭所有的存储,所有收到的日志数据将会被丢弃。

systemd-journald常用参数介绍

代码语言:javascript
复制
[Journal] 
Storage=auto
Compress=yes
SystemMaxUse=2G
SystemMaxFileSize=100M 
SystemMaxFiles=2
RuntimeMaxUse=100M 
RuntimeMaxFileSize=100M 
RuntimeMaxFiles=2
MaxRetentionSec=7day

Storage:systemd-journald存储模式
Compress=yes:压缩历史日志
SystemMaxUse:日志最多可以使用多少空间,默认为自己文件系统的10%
SystemMaxFileSize:日志文件最大大小
SystemMaxFiles:保留的最多文件数
RuntimeMaxUse=100M:存储在内存中的日志文件大小
RuntimeMaxFileSize=100M:存储在内存中最大文件大小
RuntimeMaxFiles=2:存储的最多文件数
MaxRetentionSec=7day 日志持久化存储天数

查询systemd-journald的日志

systemd-journald 服务不会像rsyslog将日志保存在不同的日志文件中。为了避免因为issues问题检查不同的日志,systemd-journald以二进制的形式保存事件和信息。systemd-journald日志文件使用普通文件编辑器无法读取,需要通过 journalctl 命令进行查询。

查看全部日志

代码语言:javascript
复制
journalctl
journalctl -xe
-x 是目录(catalog)的意思,在报错的信息下会附加解决问题的网址
-e  pager-end 从末尾开始看

查看内核日志,等同于 demsg

代码语言:javascript
复制
journalctl -k
journalctl --dmesg

查看系统引导日志

代码语言:javascript
复制
journalctl -b
journalctl --list-boots

查看实时日志

代码语言:javascript
复制
journalctl -f
journalctl -f -n 20

查看最新日志

代码语言:javascript
复制
journalctl -r

查看最新20行日志

代码语言:javascript
复制
journalctl -n 20

查看特定用户日志

代码语言:javascript
复制
id root
journalctl  _UID=0  -n 5

查看特定进程日志

代码语言:javascript
复制
journalctl _PID=1

查看日志占用的磁盘空间

代码语言:javascript
复制
journalctl --disk-usage

按时间段显示日志信息

显示最近30分钟的日志

代码语言:javascript
复制
journalctl --since=-30m

显示2024年1月1日以来的日志

代码语言:javascript
复制
journalctl --since="2024-01-01"
journalctl --since="2024-01-01 12:00:00"

显示今天的日志

代码语言:javascript
复制
journalctl --since=today

从今天上午9点开始,到1小时前的日志

代码语言:javascript
复制
journalctl --since 09:00 --until "1 hour ago"

查看昨天到现在的日志

代码语言:javascript
复制
journalctl --since yesterday

查看时间段日志

代码语言:javascript
复制
journalctl --since "2024-02-16 20:00:00" --until "2024-02-17 20:10:00"

按日志级别显示日志

系统中所有日志严重程度从高到低:emerg 0(紧急)、alert 1(警告)、crit 2(严重)、err 3(错误)、warning 4(警告提醒)、notice 5(通知)、info 6(信息)、debug 7(调试)。

查看紧急级别日志

代码语言:javascript
复制
journalctl -p emerg

显示 0、1、2 级别的所有日志

代码语言:javascript
复制
journalctl -p 2

查看特定 systemd 服务的日志

列出服务名称

代码语言:javascript
复制
systemctl list-units --type=service

查看 NetworkManager.service 服务日志

代码语言:javascript
复制
journalctl -u NetworkManager.service

查看 nginx.service 服务日志

代码语言:javascript
复制
journalctl -u nginx.service

查看可执行文件应用程序日志

代码语言:javascript
复制
journalctl /usr/local/zabbix-agent2/sbin/zabbix_agent2
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档