读懂 Linux syslog 的核心在于理解其标准格式、优先级含义以及掌握高效的过滤命令。通常,现代 Linux 系统使用 rsyslog 或 systemd-journald 来处理日志,你需要根据系统选择对应的查看方式。
标准的 syslog 格式通常包含五个关键部分,以下是一条典型日志的拆解:
<时间戳> <主机名> <进程名>[PID]: <消息内容>
sshd[1387] 表示是 sshd 进程,PID 为 1387。日志优先级(Severity Levels): 日志通常分为 8 个级别(数值越小越严重),阅读时优先关注前三项:
| 级别 | 关键字 | 含义 | 常见场景 |
|---|---|---|---|
| 0 | emerg | 紧急 | 系统不可用,如内核恐慌 |
| 1 | alert | 警报 | 必须立即采取行动 |
| 2 | crit | 严重 | 严重错误,如硬件故障 |
| 3 | err | 错误 | 一般程序运行错误 |
| 4 | warning | 警告 | 提示潜在问题,如磁盘空间不足 |
| 5 | notice | 注意 | 正常但重要的情况 |
| 6 | info | 信息 | 常规运行信息 |
| 7 | debug | 调试 | 调试详细信息,通常默认不开启 |
根据你的 Linux 发行版,日志的存储和查看方式有所不同:
现代系统主要使用 journalctl 查看二进制日志。
| 命令 | 作用 |
|---|---|
journalctl |
查看所有日志(实时滚动) |
journalctl -xe |
最常用。查看最近日志并跳转到末尾,显示解释信息 |
journalctl -f |
实时追踪日志(类似 tail -f) |
journalctl -u nginx |
查看特定服务(如 nginx)的日志 |
journalctl --since "2023-10-01" --until "2023-10-02" |
按时间范围查看 |
journalctl -p err |
只看错误级别的日志 |
日志通常存储在 /var/log/ 目录下,可以使用文本工具查看。
| 文件 | 内容 |
|---|---|
/var/log/messages |
全局系统信息(RHEL/CentOS) |
/var/log/syslog |
全局系统信息(Debian/Ubuntu) |
/var/log/auth.log |
认证相关(SSH登录、sudo使用) |
/var/log/kern.log |
内核日志 |
查看命令示例:
tail -f /var/log/sysloggrep -i "error" /var/log/sysloggrep "sshd" /var/log/auth.log当日志量大时,直接阅读非常低效,建议使用以下方法快速定位问题:
grep 快速筛选关键信息:# 查看系统启动以来的所有错误
journalctl -p 3 -xb
# 在文件中搜索错误
grep -i "failed\|error" /var/log/syslog
-xe 定位到错误发生的时间点,然后往前回溯 1-2 分钟,查看是什么操作触发的错误。sshd, network。I/O error, No space left。auth.log 中的 Permission denied。对于生产环境,如果日志量非常巨大,建议使用 ELK Stack (Elasticsearch, Logstash, Kibana) 或 Graylog 等工具进行集中式管理和可视化分析,这将极大提升排查效率。