Syslog协议日志格式翻译
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Syslog协议⽇志格式翻译
通⽤⽇志格式规范(参考 RFC5424 Syslog协议)
下⾯是关于信息格式的定义。
Syslog信息的格式定义
# ⼀条信息的构成
SYSLOG-MSG = HEADER SP STRUCTURED-DATA [SP MSG] # 最后的MSG是可省略的
# HEADER = 优先级版本空格时间戳空格主机名空格应⽤名空格进程id 空格信息id
HEADER = PRI VERSION SP TIMESTAMP SP HOSTNAME
SP APP-NAME SP PROCID SP MSGID
# PRI优先级
PRI = "<" PRIVAL ">" # 优先级 <0>
# PRI优先级的值
PRIVAL = 1*3DIGIT ; range 0 .. 191 # 3位数字, 0到191
# syslog版本号
VERSION = NONZERO-DIGIT 0*2DIGIT # 默认为 RFC5424默认为1
# 主机名
HOSTNAME = NILVALUE / 1*255PRINTUSASCII # - 或 255位可打印ASCII值
# 应⽤名
APP-NAME = NILVALUE / 1*48PRINTUSASCII # - 或 48位可打印ASCII值
# 进程ID
PROCID = NILVALUE / 1*128PRINTUSASCII # - 或 128位可打印ASCII值
# 信息ID
MSGID = NILVALUE / 1*32PRINTUSASCII # - 或 32位可打印ASCII值
# 时间戳
TIMESTAMP = NILVALUE / FULL-DATE "T" FULL-TIME # - 或 "0000-00-00"
# 完整⽇期格式
FULL-DATE = DATE-FULLYEAR "-" DATE-MONTH "-" DATE-MDAY # "0000-00-00"
# 年
DATE-FULLYEAR = 4DIGIT # 四位数字
# ⽉
DATE-MONTH = 2DIGIT ; 01-12 # 两位数字
# ⽇
DATE-MDAY = 2DIGIT ; 01-28, 01-29, 01-30, 01-31 based on month/year
# 完整时间(带时区)
FULL-TIME = PARTIAL-TIME TIME-OFFSET
# 时间(不带时区)
PARTIAL-TIME = TIME-HOUR ":" TIME-MINUTE ":" TIME-SECOND # 23:59:59
[TIME-SECFRAC]
# ⼩时
TIME-HOUR = 2DIGIT ; 00-23 # 两位数字
# 分
TIME-MINUTE = 2DIGIT ; 00-59 # 两位数字
# 秒
TIME-SECOND = 2DIGIT ; 00-59 # 两位数字
# 时间的⼩数部分
TIME-SECFRAC = "." 1*6DIGIT # 6位数字
TIME-OFFSET = "Z" / TIME-NUMOFFSET # 相对于标准时区的偏移, "Z" 或 +/- 23:59
# 相对于便准时区的偏移
TIME-NUMOFFSET = ("+" / "-") TIME-HOUR ":" TIME-MINUTE # +/- 23:59
# 结构化数据
STRUCTURED-DATA = NILVALUE / 1*SD-ELEMENT # - 或 SD-ELEMENT
SD-ELEMENT = "[" SD-ID *(SP SD-PARAM) "]" # [SD-ID*( PARAM-NAME="PARAM-VALUE")]
SD-PARAM = PARAM-NAME "=" %d34 PARAM-VALUE %d34 # PARAM-NAME="PARAM-VALUE"
SD-ID = SD-NAME # SD-ID
PARAM-NAME = SD-NAME # 参数名
PARAM-VALUE = UTF-8-STRING # utf-8字符, '"', '\' 和 ']'必须被转义
SD-NAME = 1*32PRINTUSASCII # 1到32位可打印ascii值,除了'=',空格, ']', 双引号(")
MSG = MSG-ANY / MSG-UTF8 # 信息
MSG-ANY = *OCTET ; not starting with BOM # ⼋进制字符串不以BOM开头
MSG-UTF8 = BOM UTF-8-STRING # utf-8格式字符串
BOM = %xEF.BB.BF # 表明编码⽅式,以 EF BB BF开头表明utf-8编码
UTF-8-STRING = *OCTET # RFC 3629规定的字符
OCTET = %d00-255 # ascii
SP = %d32 # 空格
PRINTUSASCII = %d33-126 # ascii值的33-126,即数字、⼤⼩写字母、标点符号
NONZERO-DIGIT = %d49-57 # ascii的49-57
DIGIT = %d48 / NONZERO-DIGIT # ascii的48-57
NILVALUE = "-" # ⽆对应值
对定义的解释
1. PRI(优先级)
优先级使⽤"<"和">"括起来,中间是1到3位数字,优先PRIVAL是具体的数值,由设备编号和⽇志等级两部份通过计算获得,计算公式为:
PRIVAL = Facility * 8 + severity
例如"local use 4"信息(Facility=20) 的⽇志级别是Notice (Severity=5),那么优先级是20 * 8 + 5 = 165。
# 设备编号
Numerical Facility
Code
0 kernel messages
1 user-level messages
2 mail system
3 system daemons
4 security/authorization messages
5 messages generated internally by syslogd
6 line printer subsystem
7 network news subsystem
8 UUCP subsystem
9 clock daemon
10 security/authorization messages
11 FTP daemon
12 NTP subsystem
13 log audit
14 log alert
15 clock daemon (note 2)
16 local use 0 (local0)
17 local use 1 (local1)
18 local use 2 (local2)
19 local use 3 (local3)
20 local use 4 (local4)
21 local use 5 (local5)
22 local use 6 (local6)
23 local use 7 (local7)
# ⽇志等级
Numerical Severity
Code
0 Emergency: system is unusable
1 Alert: action must be taken immediately
2 Critical: critical conditions
3 Error: error conditions
4 Warning: warning conditions
5 Notice: normal but significant condition
6 Informational: informational messages
7 Debug: debug-level messages
2. VERSION
VERSION指的是Syslog协议的版本RFC5424⽤的是版本号是"1"。
3. TIMESTAMP
"T"、"Z"字母必须⼤写
"T"是必需的
不能使⽤闰秒
如果⽆法找到时间戳,要使⽤"-"代替
# 例1
1985-04-12T23:20:50.52Z
# 例2
1985-04-12T19:20:50.52-04:00
# 例3
2003-10-11T22:14:15.003Z
# 例4
2003-08-24T05:14:15.000003-07:00
# ⽆效的时间戳,⼩数点后只能保留6位
2003-08-24T05:14:15.000000003-07:00
4. HOSTNAME主机名
主机名的写法应当优先选⽤下⾯的写法:
1. FQDN 完全合格域名/全称域名
2. Static IP address 静态IP
3. hostname 主机名
4. Dynamic IP address 动态ip
5. the NILVALUE "-"
5. APP-NAME
APP-NAME⽤于识别产⽣信息的设备或应⽤,如果⽆法得知⽣成设备或应⽤,则使⽤"-"代替。
6. PROID
PROID的值⼀般为进程名称或进程ID,如果⽆法得知,则使⽤"-"代替。
PROID常⽤于分析尽⽇志⽣成进程的连续性,但并不是⼗分可靠,因为重启了进程之后可能还会分配到与原来相同的ID。
7. MSGID
MSGID⽤于识别信息的类型,例如"TCPIN"和"TCPOUT"分别代表TCP数据的流⼊和流出。
如果⽆法得知类型则使⽤"-"代替。
8. STRUCTURED-DATA
STRUCTURED-DATA提供了⼀种记录被良好定义易于被解析的数据的数据格式。
例如它可以⽤于记录系统的元信息或应⽤相关的信息。
STRUCTURED-DATA可以包含零到多条结构化数据,每条结构化数据也被称作"SD-ELEMENT",如果包含0条信息,则必须使⽤"-"作为占位符。
1. SD-ELEMENT由名字和键值对参数组成,名字被称作"SD-ID",键值对被称作"SD-PARAM"。
2. SD-ID在⼀条信息中必须唯⼀,⽤于识别SD-ELEMENT的类型和⽬的
3. SD-PARAM由PARAM-NAME和PARAM-VALUE组成,IANA定义了所有可⽤的SD-ID和PARAM
4. 例⼦
# 有效例⼦1
[exampleSDID@32473 iut="3" eventSource="Application" eventID="1011"]
# 有效例⼦2:两个SD-ELEMENT
[exampleSDID@32473 iut="3" eventSource="Application" eventID="1011"] [examplePriority@32473 class="high"]
# ⽆效例⼦:两个SD-ELEMENT之间不能⽤空格
[exampleSDID@32473 iut="3" eventSource="Application" eventID="1011"][examplePriority@32473 class="high"]
# ⽆效例⼦:左括号之后不能有空格
[ exampleSDID@32473 iut="3" eventSource="Application" eventID="1011"][examplePriority@32473 class="high"]
# 有效例⼦
[sigSig ver="1" rsID="1234" ... signature="..."]
9. MSG
MSG没有固定的格式,应当使⽤unicode字符集,utf-8的编码⽅式。