rsyslog的template功能是实现标准化日志分发的核心机制,关键在于构造符合rfc 5424的结构化消息格式,需显式包含时间戳(date-rfc3339)、主机名、应用名、进程id、消息id、结构化数据及utf-8消息体,并通过rsyslog_syslogprotocol23format模板或自定义template语句实现,同时须启用utf-8编码和tls加密传输以确保合规性。

Rsyslog 的 Template 功能是实现标准化 syslog 数据分发的核心机制,关键在于正确构造符合 RFC 5424(Syslog-Protocol)的结构化消息格式,而非默认的 BSD 风格(RFC 3164)。直接使用内置模板 RSYSLOG_ForwardFormat 或自定义模板时,必须显式包含时间戳、主机名、应用名、进程 ID、消息 ID、结构化数据(SD)字段和 UTF-8 消息体等要素。
启用 RFC 5424 兼容模式并选择基础模板
Rsyslog 默认以 RFC 3164 格式运行。需在主配置(如 /etc/rsyslog.conf 或 /etc/rsyslog.d/50-default.conf)中启用 RFC 5424 支持:
- 确保加载
imuxsock和imklog模块时启用syslog.rfc5424参数(新版 rsyslog v8+ 默认启用) - 对本地日志输入,推荐使用内置模板
RSYSLOG_SyslogProtocol23Format,它已严格遵循 RFC 5424 定义的字段顺序与编码规则 - 若需转发至远程接收端(如 SIEM 系统),在
action中显式指定该模板:*.* @@remote-siem.example.com:514;RSYSLOG_SyslogProtocol23Format
自定义 RFC 5424 模板:控制结构化数据(SD)与字段精度
当需要注入自定义 SD 元素(如审计类型、租户 ID)或调整时间精度时,应手写 template。注意以下要点:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 使用
property指令提取标准字段,例如:%timestamp:::date-rfc3339% %hostname% %app-name% %procid% %msgid% [%structured-data%]%msg% - 时间戳必须用
date-rfc3339格式(含毫秒与 UTC 偏移),不可用date-rfc5424(该格式已弃用且不兼容) - 结构化数据字段需按 RFC 5424 规则格式化,例如:
[exampleSDID@32473 eventSource="firewall" severity="high"];空 SD 写作- - 模板定义示例:
template(name="MyRFC5424" type="string" string="%timestamp:::date-rfc3339% %hostname% %app-name% %procid% %msgid% [mySD@12345 site=\"prod\" env=\"staging\"] %msg%")
验证输出是否真正符合 RFC 5424
仅靠模板名称不能保证合规。建议通过以下方式验证:
- 用
logger -p local0.info "test message"发送测试日志,捕获输出(如重定向到文件或用tcpdump抓包) - 检查首字段是否为 RFC 3339 时间(如
2024-05-22T14:32:18.123456+08:00),非传统May 22 14:32:18 - 确认结构化数据部分存在且括号匹配,无非法字符(如双引号未转义、空格缺失)
- 使用在线解析器(如 syslog-server.com parser)粘贴原始日志行,查看字段拆解结果
常见陷阱与绕过方案
实际部署中容易忽略的细节:
-
UTF-8 编码未启用:在全局配置顶部添加
$DefaultCharset UTF-8,否则中文或特殊符号会被截断或乱码 -
远程 TCP 转发未启用 TLS:RFC 5424 推荐加密传输。启用
gtls模块后,改用@@(TLS)或@@@(TCP + TLS)语法,并配置证书路径 -
日志源本身不提供完整字段:例如 systemd-journald 默认不传
msgid。可用mmjsonparse模块解析 JSON 日志,再用set $!msgid = "default"补全缺失字段










