syslog 的消息格式有哪些(RFC 3164 vs RFC 5424)?
syslog 两大格式:RFC 3164(传统 BSD 格式,时间戳不带年份)和 RFC 5424(现代格式,结构化、带年份和时区)。本文详解两种格式的字段构成。
syslog 有两种主流格式:RFC 3164(老式 BSD syslog,如 Jan 15 10:30:00 host app: message)和 RFC 5424(现代格式,时间戳带年份时区、支持结构化数据)。新系统应优先用 RFC 5424。
RFC 3164(传统格式)
<134>Jan 15 10:30:00 myhost sshd[1234]: Accepted password for user from 192.168.1.1
各部分:
<134>:PRI = facility×8 + severity(134 = local0×8 + info 6... 实际是 16×8+6);Jan 15 10:30:00:时间戳(不带年份和时区——这个格式最大的缺陷);myhost:主机名;sshd[1234]:程序名和 PID;- 冒号后面:消息正文。
RFC 5424(现代格式)
<165>1 2024-01-15T10:30:00.123+08:00 myhost sshd 1234 ID47 [exampleSDID@32473 iut="3" eventSource="Application"] 用户登录成功
改进:
- 版本号
1; - ISO 8601 时间戳(带年份、毫秒、时区);
- 明确的 msgid(如 ID47);
- 结构化数据
[key="value"]段; - 支持 UTF-8 消息内容。
严重性级别(severity)
| 数值 | 级别 | 含义 |
|---|---|---|
| 0 | emerg | 系统不可用 |
| 1 | alert | 需立即处理 |
| 2 | crit | 严重 |
| 3 | err | 错误 |
| 4 | warning | 警告 |
| 5 | notice | 需要注意 |
| 6 | info | 信息 |
| 7 | debug | 调试 |
观测云对照
观测云 DataKit 的 syslog 接收器自动识别 RFC 3164 和 RFC 5424 两种格式,解析出 facility、severity、主机名、程序名等字段,统一进入日志查看器检索。
常见问题(FAQ)
Q:设备发的是哪种格式怎么判断?
A:看时间戳:Jan 15 10:30:00 是 3164;2024-01-15T... 是 5424。多数现代设备可配置选择。
Q:facility 是什么?
A:消息来源类别(auth、cron、daemon、local0-7 等),用于路由和过滤。自定义应用一般用 local0-local7。
Q:PRI 数字怎么算?
A:PRI = facility 数值 × 8 + severity 数值。如 local0(16)+ info(6)= 134。