Syslog协议-RFC5424 + RFC3164 - 简书
syslog协议_rfc5424-CSDN博客
RFC 5424 - The Syslog Protocol
RFC 5424 - Syslog 协议
1. 引言
本文档描述了一个分层架构的syslog协议。此架构的目标是分离消息内容与消息传输,同时为每一层提供可扩展性。文档定义了syslog消息的标准格式,并概述了传输映射的概念,还描述了结构化数据元素,这些元素可用于传输易于解析的结构化信息,并允许供应商扩展。
文档还提到了传统syslog的设计目标,并指出新的分层规范是必要的,因为可靠和安全的syslog扩展标准化工作缺乏一个标准轨道和传输独立的RFC。本文档旨在提供一个syslog扩展可以构建的基础,并允许为每个syslog功能编写一次代码,而不是为每个传输编写一次。
2. 文档中使用的约定
本文档中的关键词“MUST”、“MUST NOT”、“REQUIRED”、“SHALL”、“SHALL NOT”、“SHOULD”、“SHOULD NOT”、“RECOMMENDED”、“MAY”和“OPTIONAL”的解释遵循RFC 2119。
3. 定义
Syslog协议使用三个层次:
syslog内容:包含在syslog消息中的管理信息。
syslog应用层:处理syslog消息的生成、解释、路由和存储。
syslog传输层:将消息发送到网络并从网络接收消息。
文档定义了以下类型的函数角色:
originator:生成syslog内容以包含在消息中。
collector:收集syslog内容进行进一步分析。
relay:转发消息,从发起者或其他中继接收消息,并将其发送到收集器或其他中继。
传输发送者:将syslog消息传递给特定的传输协议。
传输接收者:从特定的传输协议接收syslog消息。
4. 基本原则
syslog通信遵循以下原则:
syslog协议不提供消息传递的确认。尽管某些传输可能提供状态信息,但syslog在概念上是一个纯单向通信协议。
发起者和中继可以配置为将相同的消息发送到多个收集器和中继。
发起者、中继和收集器功能可能驻留在同一系统上。
5. 传输层协议
本文档不指定任何传输层协议,而是描述了一种与传输层无关的syslog消息格式。syslog传输在其他文档中定义,如RFC 5426定义了与传统UDP传输一致的传输方式。所有实现必须支持基于TLS的传输(如RFC 5425所述),并应支持基于UDP的传输(如RFC 5426所述)。建议使用基于TLS的传输。
6. Syslog消息格式
Syslog消息具有如下ABNF(Augmented Backus-Naur Form)定义:
SYSLOG-MSG = HEADER SP STRUCTURED-DATA [SP MSG]
HEADER = PRI VERSION SP TIMESTAMP SP HOSTNAME SP APP-NAME SP PROCID SP MSGID
…
消息结构包括优先级(PRI)、版本(VERSION)、时间戳(TIMESTAMP)、主机名(HOSTNAME)、应用名(APP-NAME)、进程ID(PROCID)和消息ID(MSGID),后面可选地跟随结构化数据(STRUCTURED-DATA)和消息正文(MSG)。
6.1 消息长度
Syslog消息的大小限制由所使用的syslog传输映射决定。每个传输映射定义了最小最大消息长度支持,该长度至少为480字节。所有传输接收者必须能够接受长达480字节的消息,并应能够接受长达2048字节的消息。
6.2 HEADER
HEADER部分使用7位ASCII字符集(在8位字段中),并设计为与旧的BSD-based syslog兼容。
PRI:包含优先级值(PRIVAL),该值由设施和严重性组合而成。
VERSION:表示syslog协议规范的版本号。
TIMESTAMP:消息的时间戳。
HOSTNAME、APP-NAME、PROCID、MSGID:分别表示主机名、应用名、进程ID和消息ID。
6.3 STRUCTURED-DATA
结构化数据允许包含易于解析的结构化信息,如时间质量、起源信息等。每个结构化数据元素包含一个SD-ID和零个或多个SD-PARAM。
7. 结构化数据ID
文档定义了多个标准化的结构化数据ID,如timeQuality、origin、meta等,并详细说明了它们的用途和格式。
8. 安全考虑
文档讨论了多种安全考虑因素,包括Unicode支持、控制字符、消息截断、重放攻击、可靠传递、拥塞控制、消息完整性和消息观察等。
9. IANA