syslog 的消息格式有哪些(RFC 3164 vs RFC 5424)?

syslog 两大格式:RFC 3164(传统 BSD 格式,时间戳不带年份)和 RFC 5424(现代格式,结构化、带年份和时区)。本文详解两种格式的字段构成。

最佳实践
syslog 的消息格式有哪些(RFC 3164 vs 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。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台