一种Syslog日志自动解析方法与流程

文档序号:32221758发布日期:2022-11-16 10:01阅读:42来源:国知局
一种syslog日志自动解析方法
技术领域
:1.本发明涉及计算机信息
技术领域
:,尤其涉及一种syslog日志自动解析方法。
背景技术
::2.syslog日志是计算机和网络系统中最常见的日志格式,一般遵循rfc3164和rfc5424标准。syslog日志用于记录业务系统或网络设备在运行过程中的关键过程的记录,用于进行审计或分析问题。syslog最早用于unix系统,现在基本上所有的网络设备都支持syslog协议。它是一种标准协议,每个厂商每款设备都会有自己的syslog日志标准,记录设备在业务处理过程中的关键信息。syslog协议支持tcp或者udp,一般都使用udp作为传输协议,接收端口默认为514。3.syslog日志来源于不同厂家的软硬件系统,业务也不一样,往往不具有统一的syslog格式。对于日志审计和分析系统来讲,对多源异构的syslog日志数据进行解析是一份重要任务。通常的解决方法是针对每个不同型号的设备和不同版本的软件或系统的日志编写日志解析模板(通常为正则表达式),来对该格式的日志提供解析能力。这种正则表达式即被定义为静态模板,静态模板在日志系统的日志解析模块启动时进行加载。在运行时,日志系统将取得的每一条新日志去匹配预定义日志格式解析模板,匹配成功后提取所有字段的内容。目前的模板即正则表达式,都是由人工进行编写,需要针对每一条日志进行人工分析,日志匹配解析的工作量很大。4.目前,针对未知日志进行自动化解析已经有不少探索研究:例如申请号为cn202010379526.0的专利申请,采集日志消息并根据levenshtein编辑距离相似度将采集的日志消息划分为不同的日志组;根据分组后的结果提取日志消息中日志消息内容的结构化信息,与提取的日志头中的结构化信息合并后共同作为该日志消息的结构化信息。然而该技术方案中预处理过程不够自动化,人工分析工作量较大,并且该方案没有自动识别分隔符的技术,实际应用在syslog解析时会遇到难题,不能达到很好的自动化效果。5.鉴于上述提到的现有方案的不完备性,本发明构建了一种syslog日志自动解析方法,能够充分融合了syslog日志的先验知识,针对syslog日志的常见字段特进行了特征提取,算法简单,易于实现易于工程化。技术实现要素:6.本发明提供了一种syslog日志自动解析方法,包括:7.采集大量单一来源的syslog日志报文;8.去除syslog日志的头部信息,保留消息体内容,解析为字符串集合;9.分析字符串集合,确定分隔符;10.使用确定的分隔符对syslog日志消息体内容进行分割,把所有日志按分隔符分割为字符串数组;11.确认字符串数组中的字符串是否存在key;12.根据是否存在key值的情况对字符串进行分类,如果存在key,则根据key和数据长度对日志进行分类,如果不存在key,则检查数据的数据类型,根据数组长度和数据类型对日志进行分类;13.自动生成不同分类日志的解析模板,使用解析模板提取每一个字段对应的value值,并进行后续的字段映射或转换的范化处理。14.如上所述的一种syslog日志自动解析方法,其中,由pc机上的程序接收syslog日志,将syslog日志保存到数据库或文件。15.如上所述的一种syslog日志自动解析方法,其中,分隔符集合包括@=’”?.:/\。16.如上所述的一种syslog日志自动解析方法,其中,针对本技术列出来的分隔字符集合,采用频繁项集算法,找出来分割字符的频繁序列,该序列为单个字符或多个字符的集合。17.如上所述的一种syslog日志自动解析方法,其中,确认字符串数组中是否存在key的算法为:查找字符串数组的每一个字符串中是否都包含等号或冒号。18.本发明还提供一种计算机存储介质,包括:至少一个存储器和至少一个处理器;19.存储器用于存储一个或多个程序指令;20.处理器,用于运行一个或多个程序指令,用以执行上述任一项所述的一种syslog日志自动解析方法。21.本发明实现的有益效果如下:22.1)采用本发明技术方案,可快速生成syslog日志的正则解析表达式,节省大量人力。23.2)充分利用syslog协议和业界的通用做法,算法更有针对性,更易于实现,更简单高效。附图说明24.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。25.图1是本发明实施例一提供的一种syslog日志自动解析方法流程图。具体实施方式26.下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。27.实施例一28.在介绍本技术提供的一种syslog日志自动解析方法之前,先对syslog日志属性描述如下:29.(一)syslog日志是计算机和网络系统中最常见的日志格式,一般遵循rfc3164和rfc5424标准。syslog日志是基于可读字符的字符串,具有统一的头部结构,具体内容信息由各个厂商自行定义,例如rfc5424标准规定消息最大长度为2048个字节;30.(二)syslog协议对头部结构作出明确规定,例如头部结构为《30》oct922:33:2010.20.21.66auditd[1787],对消息体没有具体要求,由各个厂商自行定义。[0031]下面是一些典型的syslog日志样例:[0032]①厂商a交换机日志样例:[0033]《188》mar30201810:12:17l13_hlgcld_bsw01_7703%%01sece/4/port_attack_occur(l)[1001]:autoport-defendstarted.(sourceattackinterface=gigabitethernet2/0/13,attackprotocol=arp-request)[0034]②厂商a防火墙日志样例:[0035]《188》mar20202113:32:27huaweifw%%ipsec/5/ipsec_tunnel_established:vsys[vsys-name]:anipsectunnelisestablished.(policyname=policy-aaa,ifindex=5,seqnum=218,rulenum=rule-aaa,srcip=192.168.2.6,dstip=192.168.2.8,slot=2,cpuid=2,state=1,role=admin)[0036]③厂商b交换机的日志样例:[0037]《190》dec821:43:572002lyz-cqz-csw01-s5500%%10sc/6/sc_aaa_launch(l):-devip=10.0.53.31-aaatype=account-aaascheme=local-service=login-username=admin123@system;aaalaunched.[0038]④厂商c防火墙的日志样例:[0039]《130》netscreen:netscreendevice_id=netscreen[root]system-notification-00257(traffic):start_time="2014-04-2416:01:32"duration=0policy_id=1service=dnsproto=17srczone=trustdstzone=untrustaction=denysent=0rcvd=0src=192.168.44.34dst=8.8.8.8src_port=49154dst_port=53session_id=0[0040]⑤厂商d交换机的日志样例:[0041]《187》40282:apr1314:40:49.363:%link-3-updown:interfacegigabitethernet1/0/13,changedstatetodown[0042]由上述syslog日志样例可以得出,syslog日志的主体消息内容大部分都是采用key+value形式,再用分隔符进行分割。另外也由一些厂商考虑日志格式比较固定,所以减小日志报文直接省略key,只在日志展示value并用分隔符分割,例如本技术的日志消息体样例:[0043]108|^127.0.0.1|^智能监测终端名称|^123325222|^1|^127.0.0.1|^防火墙|^524|^127.0.0.1|^审计|^8888|^tcp|^16|^servicenum|^objectnum|^tableservice|^tableioi|^pccccmd|^pcccfnc|^[0044]针对上述syslog日志的结构特定,本发明提供一种syslog日志自动解析方法,通过对网络或文件中的syslog日志进行自动化解析,从而获取该日志的大概结构的方法。如图1所示,所述方法具体包括:[0045]步骤110、采集大量单一来源的syslog日志报文;[0046]具体地,针对某一设备采集大量syslog日志报文,确保采集来源单一;每个设备的日志格式是统一的,确保报文业务多样,以全面分析。例如,由pc机上的程序接收syslog日志,将syslog日志保存到数据库或文件。[0047]步骤120、去除syslog日志的头部信息,保留消息体内容,解析为字符串集合;[0048]由于syslog日志的头部信息为固定格式,相对比较简单,因此本技术在对syslog日志分析时不考虑头部信息的解析,只进行消息体内容的解析,将消息体内容解析为字符串集合。[0049]步骤130、分析字符串集合,确定分隔符;[0050]分隔符集合为键盘上不包含字母的可见字符,排除一些专用字符,主要包括@=’”?.:/\,这些字符在内容中经常被用到所以不会被用于字段之间的分割符,剩下的字符集合即分隔符为空格和~`!#$%^&*_-+|;,()[]{}《》。[0051]确认分隔符的算法具体为:[0052]针对本技术列出来的分隔字符集合,采用频繁项集算法(比如apriori算法),找出来分割字符的频繁序列,该序列可能是单个字符,也可能是多个字符的集合。因为分隔字符集已经确定,总共20多个字符,所以寻找频繁项集的算法在应用时效率非常高,适合应用于实际工程。因为同一个厂商同一款设备的日志分隔符一定是固定,并且出现多次,分隔符一定来自于前面给出的特殊字符集,所以该算法找出来的结果是比较可靠的。如果算法计算结果出现字符组合,优先使用字符组合。[0053]步骤140、使用确定的分隔符对syslog日志消息体内容进行分割,把所有日志按分隔符分割为字符串数组;[0054]步骤150、确认字符串数组中的字符串是否存在key;[0055]key是在每个日志里都出现的短语或组合,并且key和value之间通常使用特殊符号连接,一般为等号和冒号。确认字符串数组中是否存在key的算法为:查找字符串数组的每一个字符串中是否都包含等号或冒号。[0056]步骤160、根据是否存在key值的情况对字符串进行分类,如果存在key,则根据key和数据长度对日志进行分类,如果不存在key,则检查数据的数据类型,根据数组长度和数据类型对日志进行分类;[0057]因为每一类日志分割后的数组长度一样、格式一致,所以可以比较容易的分为不同的组。分类算法具体为:按数组长度分类,同一类日志分割后长度是一样的;同样长度的数组,再逐个检查每一项的相似度;对于存在key的日志,直接检查key的一致性,同一类日志的key是一样的;对于不存在key的日志,检查数据类型一致性,同一类日志在相同位置的数据类型是一致的,主要检查数字、ip地址、日期(时间)、字符串这几类数据类型。[0058]步骤170、自动生成不同分类日志的解析模板,使用解析模板提取每一个字段对应的value值,并进行后续的字段映射或转换的范化处理;[0059]在对字符串分类后,每一类的日志格式一致,字段明确,由此根据是否存在key,自动生成该类日志的解析模板,即正则表达式,即可以提取出对应字段的value值。对于存在key的日志,可拆分key和value,由用户进行字段映射转换,进行范化处理;对于不存在key的日志,拆分为value列表,由用户根据日志的相关文档补充key,进行范化处理。[0060]本发明充分syslog日志协议的特点,自动识别分隔符,利用syslog协议的已知特性,基于这些特性进行分析,自动化构造日志解析模板,可以比较方便地进行syslog日志的建模分析。[0061]与上述实施例对应的,本发明实施例提供一种计算机存储介质,包括:至少一个存储器和至少一个处理器;[0062]存储器用于存储一个或多个程序指令;[0063]处理器,用于运行一个或多个程序指令,用以执行一种syslog日志自动解析方法。[0064]与上述实施例对应的,本发明实施例提供一种计算机可读存储介质,计算机存储介质中包含一个或多个程序指令,一个或多个程序指令用于被处理器执行一种syslog日志自动解析方法。[0065]本发明所公开的实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序指令,当所述计算机程序指令在计算机上运行时,使得计算机执行上述的一种syslog日志自动解析方法。[0066]在本发明实施例中,处理器可以是一种集成电路芯片,具有信号的处理能力。处理器可以是通用处理器、数字信号处理器(digitalsignalprocessor,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(fieldprogrammablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。[0067]可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。处理器读取存储介质中的信息,结合其硬件完成上述方法的步骤。[0068]存储介质可以是存储器,例如可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。[0069]其中,非易失性存储器可以是只读存储器(read-onlymemory,简称rom)、可编程只读存储器(programmablerom,简称prom)、可擦除可编程只读存储器(erasableprom,简称eprom)、电可擦除可编程只读存储器(electricallyeprom,简称eeprom)或闪存。[0070]易失性存储器可以是随机存取存储器(randomaccessmemory,简称ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(staticram,简称sram)、动态随机存取存储器(dynamicram,简称dram)、同步动态随机存取存储器(synchronousdram,简称sdram)、双倍数据速率同步动态随机存取存储器(doubledataratesdram,简称ddrsdram)、增强型同步动态随机存取存储器(enhancedsdram,简称esdram)、同步连接动态随机存取存储器(synchlinkdram,简称sldram)和直接内存总线随机存取存储器(directrambusram,简称drram)。[0071]本发明实施例描述的存储介质旨在包括但不限于这些和任意其它适合类型的存储器。[0072]本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件与软件组合来实现。当应用软件时,可以将相应功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。[0073]以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1