Syslog是一种行业标准的协议,可用来记录设备的日志。常见的应用场景是网络管理工具、安全管理系统、日志审计系统。本文档介绍如何使用SLS DSL中的GROK函数高效快捷的解析不同格式的Syslog日志。
概况
在Unix类操作系统上,Syslog广泛应用于系统日志。Syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收Syslog的服务器。服务器可以对多个设备的Syslog消息进行统一的存储,或者解析其中的内容做相应的处理。
问题
长期以来,没有一个标准来规范Syslog的格式,导致Syslog的格式非常随意。甚至有些情况下没有任何格式,导致程序不能对Syslog消息进行解析,只能将它看作是一个字符串。所以如何解析不同格式的Syslog日志就变的非常重要。
Syslog协议标准简介
目前业界存在常见两种Syslog日志协议,一个是2009年的RFC5424协议,另外一个是2001年的RFC3164协议。以下介绍这两种协议的不同之处,以便在后续实践中能够灵活应用GROK解析Syslog日志。
RFC5424协议
RFC5424协议包含以下字段信息,具体信息请参见PRI VERSION SP TIMESTAMP SP HOSTNAME SP APP-NAME SP PROCID SP MSGID
通过以下示例来对以上字段进行说明:"""
Example1:
<34>1 2019-07-11T22:14:15.003Z aliyun.example.com ali - ID47 - BOM'su root' failed for lonvick on /dev/pts/8
"""
PRI -- 34
VERSION -- 1
TIMESTAMP -- 2019-07-11T22:14:15.003Z
HOSTNAME -- aliyun.example.com
APP-NAME -- ali
PROCID -- 无
MSGID -- ID47
MESSAGE -- 'su root' failed for lonvick on /dev/pts/8
"""
Example2:
<165>1 2019-07-11T22:14:15.000003-07:00 192.0.2.1 myproc 8710 - - %% It's time to make the do-nuts.
"""
PRI -- 165
VERSION -- 1
TIMESTAMP -- 2019-07-11T05:14:15.000003-07:00
HOSTNAME -- 192.0.2.1
APP-NAME -- myproc
PROCID -- 8710
STRUCTURED-DATA -- “-”
MSGID -- “-”
MESSAGE -- "%% It's time to make the do-nuts."
&#