Syslog协议-RFC5424 + RFC3164
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Syslog协议-RFC5424 + RFC3164相关的知识,希望对你有一定的参考价值。
参考技术A RFC5424协议手册地址: https://tools.ietf.org/html/rfc5424RFC3164协议手册地址: https://tools.ietf.org/html/rfc3164
Syslog常被用来日志等数据的传输协议,数据格式遵循规范主要有RFC3164,RFC5424;
RFC5424 相比 RFC3164 主要是数据格式的不同,RFC3164相对来说格式较为简单,能适应大部分使用场景,但是已废弃,RFC5424已作为Syslog的业界规范;下面就来分别讲讲两个协议;
RFC 5424 规定消息最大长度为2048个字节,如果收到Syslog报文,超过这个长度,需要注意截断或者丢弃;
PRI为消息优先级,用"<"和">"括起来。PRI由两部分组成:
计算方式为:PRI = Facility * 8 + severity;(例如 165表示一条级别为Notice的local4消息)
Facility取值范围及含义如下:
Severity取值范围含义:
上述一般对应于日志的8种级别;
版本用来表示Syslog协议的版本,RFC5424的版本号为“1”;
时间戳格式为:yyyy-mm-ddTHH:MM:SS.xxxxxx+/-HH:MM
有以下几个要求:
举例如下:
hostname标识发送syslog消息的源主机;优先选用如下几种写法:
用于识别产生消息的设备或应用,找不到用"-"代替;
进程名称或进程ID,得不到用"-"代替;ProcId常用于分析日志生成进程的连续性,但不做可靠性保证,比如进程重启还是可能会分到一样的进程ID;
标识消息类型。例如TCPIN、TCPOUT分别代表TCP数据的流入或流出;如果无法获取数据类型,用"-"代替。 MSGID可根据数据类型用于数据过滤;
结构化数据;提供了一种记录被良好定义易于被解析的数据的数据格式;可用于记录系统的元信息或应用相关的信息;
可以包含多条结构化数据——"SD-ELEMENT",如果没有则用"-"代替;
一条结构化数据SD-ELEMENT包含名字(SD-ID)以及多条键值对(SD-PARAM);
一条消息种必须唯一,用于识别SD-ELEMENT的类型和目的;
有两种格式:
值得一提的是,32473 在IANA上已被注册作为文档中的举例数字,无法被使用;
键值对;除了自定义的SD-ID外,所有的SD-PARAM也是受限的,在IANA上定义了所有的PARAM-NAME;PARAM-NAME有效范围为一个指定的SD-ID;
举例如下:
消息体,无格式要求;如果Syslog应用用UTF-8编码,必须以BOM开头;
所有规范的SD-ID都在IANA上有定义。
用来阐述系统时间的概念;
时间信息是否确定,如果确定tzKnown="1";否则tzKnown="0";
标识时间是否是NTP同步的;如果是,则值为1;否则为0;
描述消息源;
....
RFC3164推荐参照(翻译的很全):
https://www.jianshu.com/p/8656fc85e497
以上是关于Syslog协议-RFC5424 + RFC3164的主要内容,如果未能解决你的问题,请参考以下文章
log4j2 和 syslog,使用 RFC5424 格式不显示日志消息的可变参数部分