关于RedHat服务器24小时日志估算及systemd-journald与rsyslog协同工作的技术咨询
RedHat服务器24小时日志估算及systemd-journald与rsyslog协同工作的技术咨询
嗨,我来帮你拆解这几个问题,咱们一步一步说清楚:
一、systemd-journald和rsyslog的协同逻辑
简单来说,这俩是日志收集链上的前后端组合:
systemd-journald是systemd生态里的日志收集“前端”:它会优先接收来自内核、systemd服务、应用程序(包括输出到stdout/stderr的容器或普通程序)的日志,默认会把这些日志存在二进制格式的文件里——要么是/run/log/journal/下的临时存储(重启后就没了),要么是/var/log/journal/下的持久化存储(需要提前创建目录或者配置Storage=persistent)。二进制日志的优势是结构化、查询效率高,还能记录更多元数据。rsyslog是传统的日志处理“后端”:它通过imjournal模块从journald那里拉取日志,然后按照/etc/rsyslog.conf或者/etc/rsyslog.d/下的自定义规则,把日志过滤、转发,或者写入到/var/log/下的文本日志文件里(比如大家熟悉的/var/log/messages、/var/log/secure)。这样既兼容了老系统依赖的文本日志习惯,又能利用journald的高效收集能力。
二、日志的存储位置
不是所有日志都在/var/log哦,得分两种情况:
- 由
systemd-journald直接管理的二进制日志:持久化的存在/var/log/journal/,临时的存在/run/log/journal/(重启后清空); - 由
rsyslog处理后的文本日志:大多存在/var/log/目录下的各类文件里,不同服务的日志会被拆分到对应的文件(比如SSH日志在secure,系统通用日志在messages)。
三、关于日志大小估算的命令
如果你的需求是统计24小时内产生的日志大小,那du -h /var/log/journal/其实不够精准——它算的是整个journal目录的总大小,包含了所有历史日志。给你两个更贴合需求的方法:
- 针对journald的24小时日志大小:直接用
journalctl --since "24 hours ago" --disk-usage,这个命令会精准统计最近24小时内journal日志占用的磁盘空间; - 针对rsyslog的24小时日志增量:可以用
find /var/log -type f -mtime -1 -exec du -h {} +,这个会列出最近24小时修改过的所有日志文件及其大小,不过要注意日志轮转的情况(比如归档的.gz压缩日志也会被统计进去)。
备注:内容来源于stack exchange,提问作者MikiBelavista
相关产品推荐
相关产品推荐

