Systemd日志管理服务:Journald以及重要配置选项 https://www.cnblogs.com/morgan363/p/13957565.html
Linux 日志管理介绍 https://blog.csdn.net/m0_49864110/article/details/129175745
linux下的系统日志管理 https://blog.csdn.net/chitung_hsu/article/details/104301049
journald.conf(5) — Linux manual page https://www.man7.org/linux/man-pages/man5/journald.conf.5.html
journald.conf 中文手册 https://www.jinbuguo.com/systemd/journald.conf.html
https://blog.csdn.net/liukuan73/article/details/52484380
===================================
Systemd日志管理服务:Journald以及重要配置选项
https://www.cnblogs.com/morgan363/p/13957565.html
Journald是systemd引入的用于收集和存储日志数据的系统服务。它试图使系统管理员可以在越来越多的日志消息中更轻松地找到有趣且相关的信息。为了实现此目标,日记中的主要更改之一是用为日志消息优化的特殊文件格式替换简单的纯文本日志文件。这种文件格式使系统管理员可以更有效地访问相关消息。它还为单个系统带来了数据库驱动的集中日志记录实现的某些功能。
概览systemd-journald系统
Journald系统主要由三个主要的系统日记服务组件组成:
- 守护程序:systemd日志服务由systemd-journald守护程序处理。
- 配置文件:日志服务的配置在/etc/systemd/journald.conf里面设置。
- 日志搜索程序:用于搜索日记日志文件的程序是journalctl。
本文主要介绍systemd-journald日志相关的重要配置选项:主要包括systemd-journald logrotate和存储类型选择功能。
Journald支持的不同类型的存储
我们可以通过修改 /etc/systemd/journald.conf文件控制存储类型值,在[Journal]字符串下面可以修改存储类型。
[Journal]
#Storage=auto
Storage支持的值为volatile,persistent,auto和none,默认是auto,所有值的含义如下
- 如果为volatile,则日志数据将仅存储在内存中,即在 /run/log/journal目录下(根据需要创建)。
- 如果是persistent,则数据将会存储在磁盘上,即 /var/log/journal目录下,并且在早期引导阶段磁盘不可写的时候把数据保存到 /run/log/journal目录下。
- auto值意味着把日志数据存储在 /var/log/journal/目录中 (22.04 初始官方默认位置?)。但是该目录必须已经存在并且设置了适当的权限。
如果不存在,则日记数据将存储在易失性 /run/log/journal/目录中,并且在系统关闭时会删除该数据。 - none 关闭所有存储,所有接收到的日志数据将被丢弃。
对日志文件执行logrotate
systemd-journald日志文件的logrotate将基于以下值执行:
#SystemMaxUse= #SystemKeepFree= #SystemMaxFileSize= #SystemMaxFiles=100 #RuntimeMaxUse= #RuntimeKeepFree= #RuntimeMaxFileSize= #RuntimeMaxFiles=100 #MaxRetentionSec= #MaxFileSec=1month
这些设置将会限制日志文件的大小上限。 以System开头的选项用于限制磁盘使用量, 也就是 /var/log/journal 的使用量。 以 Runtime开头的选项用于限制内存使用量, 也就是 /run/log/journal 的使用量。
- RuntimeMaxUse/SystemMaxUse= 控制日志最大可使用多少磁盘空间,然后对日志文件执行systemd-journald logrotate。默认为分配给节点的总物理内存的10%
- RuntimeKeepFree/SystemKeepFree= 控制systemd-journald将为其他用途保留多少磁盘空间,之后将对日志文件执行systemd-journald logrotate。默认为分配给节点的总物理内存的15%
- SystemMaxFileSize=/RuntimeMaxFileSize= 限制单个日志文件的最大体积, 到达此限制后日志文件将会自动滚动。 默认值是对应的 SystemMaxUse=/RuntimeMaxUse= 值的1/8 , 这也意味着日志滚动 默认保留7个历史文件。
- SystemMaxFiles/RuntimeMaxFiles= 限制最多允许同时存在多少个日志文件, 超出此限制后, 最老的日志文件将被删除, 而当前的活动日志文件 则不受影响。 默认值为100个。
- MaxRetentionSec=日志滚动的时间间隔。通常并不需要使用基于时间的日志滚动策略, 因为由SystemMaxFileSize/RuntimeMaxFileSize= 控制的基于文件大小的日志滚动策略已经可以确保日志文件的大小不会超标。 默认值是一个月, 设为零表示禁用基于时间的日志滚动策略。
- MaxRetentionSec=日志文件的最大保留期限。 当日志文件的最后修改时间(mtime)与当前时间之差,大于此处设置的值时,日志文件将会被删除。 通常并不需要使用基于时间的日志删除策略。
如果我们检查systemd-journald的状态,那么我们可以看到它的报告日志已轮换:
$ systemctl status systemd-journald ● systemd-journald.service - Journal ServiceLoaded: loaded (/lib/systemd/system/systemd-journald.service; static; vendor preset: enabled)Active: active (running) since Sat 2019-11-23 08:34:43 CST; 3 months 14 days agoDocs: man:systemd-journald.service(8)man:journald.conf(5)Main PID: 404 (systemd-journal)Status: "Processing requests..."Tasks: 1 (limit: 9484)CGroup: /system.slice/systemd-journald.service└─404 /lib/systemd/systemd-journaldNov 23 08:34:43 ubuntu systemd-journald[404]: Journal started Nov 23 08:34:43 ubuntu systemd-journald[404]: Runtime journal (/run/log/journal/0bc1c3fec0b84c47ac1b0ea61a9db220) is 8.0M, max 79.5M, 71.5M free. Nov 23 08:34:43 ubuntu systemd-journald[404]: Time spent on flushing to /var is 46.023ms for 1754 entries. Nov 23 08:34:43 ubuntu systemd-journald[404]: System journal (/var/log/journal/0bc1c3fec0b84c47ac1b0ea61a9db220) is 504.0M, max 4.0G, 3.5G free. Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
linux下的系统日志管理
https://blog.csdn.net/chitung_hsu/article/details/104301049
1.systemd-journald.service日志采集查看服务
指令:
#journalctl
配置文件:
/etc/systemd/journald.conf
默认日志存放路径:
/run/log/journal
日志在内存中重启会消失
journal常用命令(Linux: systemd)
journalctl --list-boots
journalctl -b
journalctl -p
journalctl -k
journalctl -u ssh.service
journalctl --since yesterday --until now
journalctl -o json-pretty
/etc/systemd/journal.conf
原文链接:https://blog.csdn.net/nakano_azusa/article/details/115793715
补充:
systemctl status systemd-journald
Linux journal日志文件维护
https://blog.csdn.net/icanflyingg/article/details/126928918
前言
系统空间占用排查过程中,发现 /var/log/journal目录占用空间较大,我们来看一下这个 journal 目录下的文件是否真的可以删除。
journal 目录是什么?
journalctl 用来查询 systemd-journald 服务收集到的日志,是 systemd init 系统提供的收集系统日志的服务。
systemd-journald是一个改进型日志管理服务,可以收集来自内核、系统早期启动阶段的日志、系统守护进程在启动和运行中的标准输出和错误信息,还有syslog的日志。
只要你不需要日志进行任何调试,可以删除 /var/log/journal/* 内的所有内容,但不要删除 /var/log/journal目录本身。你应该看看/etc/systemd/journald.conf,有一个设置可以限制系统存储的日志量(下文有介绍),因此旧的日志会被轮换出来。
一、查询 journalctl 消耗了多少磁盘空间
journalctl --disk-usage
root@c190:/var/log# journalctl --disk-usage
Archived and active journals take up 4.3G in the file system.
二、只保留500MB的日志
journalctl --vacuum-size=500M
三、清理现有的日志到1个周以下
journalctl --vacuum-time=1w
四、控制 journal 目录大小
修改/etc/systemd/journald.conf中的此参数控制此目录的大小
SystemMaxUse=500M
重新加载配置
systemctl restart systemd-journald
原文链接:https://blog.csdn.net/icanflyingg/article/details/126928918
磁盘空间打爆以后恢复journal日志
https://cloud-atlas.readthedocs.io/zh-cn/latest/linux/redhat_linux/systemd/journal_recovery_out_of_space.html
遇到一个线上问题,根目录磁盘空间被打爆以后, journal
日志文件损坏了:
-
检查磁盘硬件应该是正常的,因为能够独立删除
/var/log
目录下文件,并且也能够写文件 -
但是执行任何
journalctl
命令都会报错Error was encountered while opening journal files: Input/output error
:
无法操作journal日志文件,始终报错¶
#journalctl --verify Error was encountered while opening journal files: Input/output error#journalctl -e Error was encountered while opening journal files: Input/output error#journalctl --vacuum-size=10M Error was encountered while opening journal files: Input/output error
已经手工清理了 /var/log
目录下 的一些 sar 文件,也就是空出了根目录大约几百兆
-
尝试校验journal日志文件
DEBUG模式校验journal日志文件¶
SYSTEMD_LOG_LEVEL=debug journalctl --verify
但是还是不行
-
实在找不出解决的方法,似乎没有
repair
命令参数,所以最后还是清理掉所有历史日志重新开始:
无法修复jouranl日志文件,所以清理掉所有日志重新开始¶
#journalctl Error was encountered while opening journal files: Input/output error#systemctl stop systemd-journald.service Warning: Stopping systemd-journald.service, but it can still be activated by:systemd-journald.socket#systemctl stop systemd-journald.socket#rm -f /var/log/journal/0eef22fd6e9d4b3da022179e6b831d26/*#ls#systemctl start systemd-journald.service#ls system.journal#journalctl -- Logs begin at Wed 2023-12-27 21:54:01 CST, end at Wed 2023-12-27 21:54:03 CST. -- Dec 27 21:54:01 gpuxdn033188212154.ea133 systemd-journal[347367]: Permanent journal is using 8.0M (max allowed 4.0G, trying to leave 4.0G free of 4.4G available → current limit 488.5M). Dec 27 21:54:01 gpuxdn033188212154.ea133 systemd-journald[341770]: Received SIGTERM from PID 1 (systemd). Dec 27 21:54:01 gpuxdn033188212154.ea133 systemd-journal[347367]: Journal started Dec 27 21:54:01 gpuxdn033188212154.ea133 polkitd[199757]: Unregistered Authentication Agent for unix-process:347362:2498725326 (system bus name :1.1430, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disconnected from bu Dec 27 21:54:01 gpuxdn033188212154.ea133 admin[347378]: alicmd:root:systemctl start systemd-journald.service:admin pts/0 2023-12-27 21:22 (33.189.253.79) Dec 27 21:54:02 gpuxdn033188212154.ea133 admin[347542]: alicmd:root:ls:admin pts/0 2023-12-27 21:22 (33.189.253.79) Dec 27 21:54:03 gpuxdn033188212154.ea133 su[347621]: (to root) root on none Dec 27 21:54:03 gpuxdn033188212154.ea133 su[347621]: pam_unix(su:session): session opened for user root by (uid=0) Dec 27 21:54:03 gpuxdn033188212154.ea133 su[347621]: pam_unix(su:session): session closed for user root
参考¶
-
Corrupted user journal files #24150
-
Systemd journal corruption on Fedora