messages 与 syslog 是什么
/var/log/messages 与 /var/log/syslog 是传统文本系统日志。RHEL 系把通用系统消息写进 messages,Debian/Ubuntu 写进 syslog,两者都由 rsyslog(或 syslog-ng)按 /etc/rsyslog.conf 与 /etc/rsyslog.d/ 下的规则落盘,认证类消息另有 secure(RHEL)与 auth.log(Debian)。它们与 systemd 的 journal 是互补关系:文本日志便于 grep、便于集中转发与长期归档,journal 则提供结构化字段与优先级过滤。双写配置不一致时两处内容会不同,排查前要先确认哪一份是权威来源。
基本信息
| 适用平台 | Linux(rsyslog 默认安装;精简镜像可能只有 journal,无文本日志) |
|---|---|
| 文件位置 | RHEL 系 /var/log/messages;Debian 系 /var/log/syslog |
| 配置来源 | /etc/rsyslog.conf 与 /etc/rsyslog.d/*.conf(syslog-ng 为 /etc/syslog-ng/) |
| 相关文件 | secure 或 auth.log 认证日志、kern.log 内核日志、user.log 用户态日志 |
| 权限说明 | 通常 root 与 adm/systemd-journal 组可读,普通用户需 sudo |
典型使用场景
- 非结构化排障:在 kernel、服务、认证消息混杂时用 grep 快速圈出错误行
- 集中日志核对:确认本机是否按预期把日志转发到日志服务器
- 长期留存:文本日志便于归档、合规保存与第三方分析工具读取
- 日志丢失排查:服务不写日志时确认 rsyslog 是否在运行、规则是否正确
- 跨版本适配:在不同发行版之间编写统一的日志检查脚本
常用示例
常用示例
sudo tail -n 100 /var/log/messages # RHEL 系主文件
sudo grep -i 'error' /var/log/syslog | tail -n 30 # Debian 系主文件
ls -lh /var/log/messages* # 是否被 logrotate 轮转
zgrep -i 'fail' /var/log/messages-*.gz # 连压缩归档一起查
grep -E '^(\*\.\*|authpriv)' /etc/rsyslog.conf /etc/rsyslog.d/*.conf 2>/dev/null | head
sudo rsyslogd -N1 # 校验 rsyslog 配置语法
sudo logrotate -d /etc/logrotate.conf | head # 干跑查看轮转规则文本日志与 journal 对照
| 维度 | messages / syslog | journalctl |
|---|---|---|
| 存储形态 | 纯文本文件,可用任何文本工具处理 | 二进制日志加索引,按单元与字段检索 |
| 过滤能力 | 逐行 grep 匹配 | 按单元、优先级、时间窗口、任意字段过滤 |
| 轮转与保留 | 由 logrotate 按策略切割压缩 | journald 按大小与时间自动清理 |
| 远程转发 | rsyslog 原生支持 UDP/TCP/RELP 转发 | 由 systemd-journal-remote 或转发到 rsyslog 实现 |
文件不存在不代表没有日志:journald 接管后部分发行版默认不再写 messages 或 syslog,先用 systemctl status rsyslog 与配置文件确认日志流向,再去 journalctl 找。
/var 独立分区写满会让系统日志静默停止,表面看服务正常但日志全部丢失。容量监控必须覆盖 /var/log,并对日志分区单独设置告警。