从 ESXi 8.0 开始,syslog 服务使用三个参数来定义消息和审核记录 - 协议、格式设置和框架设置。
支持的协议包括 UDP、TCP 和 TLS (SSL)。syslog 消息的格式设置由 RFC 3164 或 RFC 5424 定义。框架设置指定如何封装消息。封装消息的框架设置定义为透明(也称为 octet_counting)或非透明(如果消息未封装)。透明框架设置可确保消息中嵌入的新行不会使 syslog 收集器产生混乱。使用 UDP 协议发送的 Syslog 消息被视为以透明方式设置框架;syslog 收集器需要了解这一点,并接受单一消息传输。
RFC 3164 将 syslog 消息的最大总长度设置为 1024 字节,而 RFC 5424 将此最大值扩展到 2048 字节。
在 ESXi 中,远程主机消息的默认最大长度为 1 KiB。可以将最大消息长度增加到多达 16 KiB。但是,将此值提高到 1 KiB 以上不能确保长传输到达 syslog 收集器时未被截断。例如,发出消息的 syslog 基础架构位于 ESXi 外部时。
vmsyslogd 传输的 Syslog 消息包含结构化数据、根据 RFC 5424 设置格式的属性列表以及自由格式或非结构化数据。
当消息长度超过最大长度时,ESXi 8.0 会缩短该消息,但会尝试保留尽可能多的结构化数据。
缩短消息后,会向现有结构化数据添加三个参数,或者创建结构化数据以包含以下参数:msgModified、remoteHostMaxMsgLen 和 originalLen。
msgModified 参数指示缩短后对消息的影响:仅限结构化数据和/或非结构化数据。
remoteHostMaxMsgLen 参数指定 ESXi 可以处理的最大消息长度。
originalLen 参数指定消息缩短之前的长度。
ESXi syslog 消息的协议、格式设置和帧设置支持选项:
格式设置 | 框架设置 | UDP | TCP | SSL | 备注 |
---|---|---|---|---|---|
未指定 | 未指定 | 支持 RFC 5426 |
支持 | 支持 | 消息的格式设置符合 RFC 3164,只有时间戳为 RFC 3339 格式。 将在每个消息的前面放置结构化数据。 使用 TCP 或 SSL (TLS) 时,框架设置默认为非透明,结构化数据中的嵌入式换行符可能会损坏消息。 使用 UDP 时,将对数据包进行框架设置。 |
未指定 | Non_transparent | 已禁止 | 支持 | 支持 | 消息的格式设置符合 RFC 3164,只有时间戳为 RFC 3339 格式。 将在每个消息的前面放置结构化数据。 使用 TCP 或 SSL (TLS) 时,框架设置默认为非透明,结构化数据中的嵌入式换行符可能会损坏消息。 |
未指定 | Octet_counting | 已禁止 | 支持 RFC 6587 |
支持 RFC 6587 |
消息的格式设置符合 RFC 3164,只有时间戳为 RFC 3339 格式。 将在每个消息的前面放置结构化数据。 |
RFC 5424 | 未指定 | 支持 RFC 5426 |
支持 RFC 5425 |
支持 RFC 5424 |
消息的格式设置符合 RFC 5424。 使用 TCP 或 SSL (TLS) 时,框架设置默认为 octet-counting。使用 UDP 时,可能不会明确指定框架设置。 |
RFC 5424 | Non_transparent | 已禁止 | 不受支持 | 不受支持 | 不支持,因为结构化数据中的嵌入式换行符可能会损坏消息。 |
RFC 5424 | Octet_counting | 已禁止 | 支持 RFC 5425 |
支持 RFC 5425 |
消息的格式设置符合 RFC 5424。 |
RFC 3164 | 未指定 | 支持 RFC 5426 |
支持 | 支持 | 消息的格式设置符合 RFC 3164,只有时间戳为 RFC 3339 格式。 将在每个消息的前面放置结构化数据。 使用 TCP 或 SSL (TLS) 时,框架设置默认为非透明,结构化数据中的嵌入式换行符可能会损坏消息。 使用 UDP 时,将对数据包进行框架设置。 |
RFC 3164 | Non_transparent | 已禁止 | 支持 | 支持 | 消息的格式设置符合 RFC 3164,只有时间戳为 RFC 3339 格式。 将在每个消息的前面放置结构化数据。 使用 TCP 或 SSL (TLS) 时,框架设置默认为非透明,结构化数据中的嵌入式换行符可能会损坏消息。 |
RFC 3164 | Octet_counting | 已禁止 | 支持 RFC 6587 |
支持 RFC 6587 |
消息的格式设置符合 RFC 3164,只有时间戳为 RFC 3339 格式。 将在每个消息的前面放置结构化数据。 |