Linux 里的 syslog 本质上是“系统日志协议 + 日志收集机制”的统称。要“解读 syslog”,可以从 日志在哪、格式是什么、怎么看、常见含义 这几个层面来理解。
常见位置(不同发行版略有差异):
/var/log/syslog # Debian / Ubuntu
/var/log/messages # RHEL / CentOS
/var/log/auth.log # 认证相关(登录、sudo)
/var/log/kern.log # 内核日志
/var/log/cron # 定时任务
如果用了 systemd:
journalctl # 查看所有日志
journalctl -u nginx # 看某个服务
journalctl -p err # 只看错误
一条典型 syslog 内容:
Jun 12 10:23:45 hostname sshd[1234]: Failed password for root from 1.2.3.4 port 5678 ssh2
拆解含义:
| 部分 | 含义 |
|---|---|
Jun 12 10:23:45 |
时间 |
hostname |
产生日志的主机名 |
sshd[1234] |
进程名[进程PID] |
Failed password ... |
具体日志内容 |
syslog 定义了 8 个级别(从严重到普通):
0 emerg 系统不可用
1 alert 必须立即处理
2 crit 严重错误
3 err 错误
4 warning 警告
5 notice 注意
6 info 信息
7 debug 调试
查看高优先级日志:
grep -E 'err|crit|alert|emerg' /var/log/syslog
表示“谁产生的日志”:
auth / authpriv:认证kern:内核daemon:后台服务cron:定时任务mail:邮件user:用户程序例如:
authpriv.warning
Failed password for root from 1.2.3.4
→ 有人尝试暴力破解 root
Accepted password for user from 10.0.0.5
→ 登录成功
kernel: Out of memory: Kill process 1234
→ 内存不足,OOM 杀进程
systemd[1]: nginx.service: Failed with result 'exit-code'
→ nginx 启动失败
EXT4-fs error (device sda1)
→ 文件系统错误
tail -f /var/log/syslog
或:
journalctl -f
/etc/rsyslog.conf/etc/rsyslog.d/*.conf示例规则:
*.err /var/log/error.log
auth.* /var/log/auth.log
syslog = 时间 + 主机 + 进程 + 日志内容
看日志重点看:时间、来源、错误级别、关键字(fail / error / denied / oom)
如果你有具体的一条 syslog 想让我帮你解读,直接贴出来就行。