如何配置journald服务的日志文件的滚动策略?
美国、香港服务器
如何配置journald服务的日志文件的滚动策略?
11-11 来源:
# journald 日志滚动策略配置
journald 的滚动(切分日志文件)由 **`MaxFileSec`、`SystemMaxFileSize`** 两个参数控制,满足任意一个条件就滚动新建日志文件;
区分:**滚动 = 新建日志文件,旧文件保留**;清理(vacuum)= 删除过期 / 超限的旧日志,由 `MaxRetentionSec`、`SystemMaxUse` 控制。
## 1、核心参数说明
编辑主配置:
nano /etc/systemd/journald.conf
[Journal]
Storage=persistent
# 条件1:单个日志文件写到这个大小,自动滚动
SystemMaxFileSize=100M
# 条件2:单个日志文件写到这个时长,自动滚动
MaxFileSec=1day
- `SystemMaxFileSize`:单文件大小阈值,到大小就切新文件
- `MaxFileSec`:单文件时间阈值,到时间就切新文件
两个条件是**或关系**:先达到哪个,就触发滚动
配套清理参数(和滚动搭配,防止磁盘爆掉)
# 日志总磁盘上限
SystemMaxUse=1G
# 全局日志最长保留时间(旧文件超时会被清理)
MaxRetentionSec=7day
## 2、完整推荐模板(直接复制)
按天切割,单文件最大 100M,日志整体最多保留 7 天、总占用 1G:
[Journal]
Storage=persistent
SystemMaxFileSize=100M
MaxFileSec=1day
SystemMaxUse=1G
MaxRetentionSec=7day
保存退出(nano:`Ctrl+O` 回车,`Ctrl+X`)
## 3、重载生效
systemctl restart systemd-journald
## 4、验证滚动策略是否加载成功
systemd-analyze cat-config systemd/journald.conf | grep -E "SystemMaxFileSize|MaxFileSec"
查看 journald 自身日志,确认参数加载:
journalctl -u systemd-journald
## 5、查看已经生成的 journal 日志文件
ls -lh /var/log/journal/$(cat /etc/machine-id)/
可以看到类似 `system@xxx.journal`、`system@xxx.journal~` 这类滚动后的文件。
## 6、手动触发滚动(测试用)
systemctl kill -s SIGUSR2 systemd-journald
发送 `SIGUSR2` 信号,journald 立刻关闭当前日志文件,新建一个日志文件。
## 7、重要避坑点
1. journald **没有 logrotate 那种按固定周期强制轮转的独立脚本**,是内置滚动;
2. `MaxFileSec` 只控制**单个文件什么时候切**,不负责删除;旧文件还在磁盘,直到触发 `MaxRetentionSec` 或者 `SystemMaxUse`;
3. 不要和 logrotate 同时管理 journal 的二进制 journal 文件(`.journal`),会损坏;
4. 临时模式 Storage=volatile 对应的是 `RuntimeMaxFileSize`,生产持久化日志用 `SystemMaxFileSize`。
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快