CN1604035A - 一种日志分析***及基于该***的分析方法 - Google Patents
一种日志分析***及基于该***的分析方法 Download PDFInfo
- Publication number
- CN1604035A CN1604035A CN 03143391 CN03143391A CN1604035A CN 1604035 A CN1604035 A CN 1604035A CN 03143391 CN03143391 CN 03143391 CN 03143391 A CN03143391 A CN 03143391A CN 1604035 A CN1604035 A CN 1604035A
- Authority
- CN
- China
- Prior art keywords
- module
- user
- statement
- tree
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种日志分析***及基于该***的分析方法,本发明在SQL语言的基础上创建一门新的语言,并利用该语言建立一个用于对安全日志进行查询、分析的日志分析***,管理员应用该日志分析***即可快速地对日志进行掌握和分析,如进行时间或时序的查找分析,对重要的主题进行上钻、下钻或聚类分析等,从而进行故障诊断、***修复、以及预测报警规则设置等操作。另外,在本发明的日志分析***中,还嵌入了分类树结构的图形化界面,使得用户可以利用图形化界面执行部分操作,也可以让用户从图形化界面获得文本输入,从而减少输入操作量;同时,利用分类树结构的图形化界面可以更直观、更形象化地查看查询、分析的结果。
Description
技术领域
本发明涉及计算机信息处理技术领域,特别是指一种日志分析***及基于该***的分析方法。
背景技术
随着信息技术的发展,数据量极度增长,数据的积累越来越大。而在信息安全领域,许多安全设备,如防火墙、入侵监测***或操作***等,每天、每时每刻都在产生事件记录和告警记录。当记录设备安全的日志量相对较少时,如只有几百条或更少时,有经验的管理员可以凭直觉和经验掌握这些历史纪录,从而丢弃误报,发现问题所在。但现在的安全设备每天要产生几万条、甚至上百万条记录。这样的数量已经超出了管理员能接受的范围,管理员仅凭知觉和经验已经无法在限定的时间内处理这些数据。
事实上,管理员进行查看、分析日志的过程,即是知识发现的过程。知识发现就是从大量数据中挖掘出未知的、有价值的模式或规律,为决策服务的复杂过程。它包含数据清洗、数据集成、数据转换、数据挖掘、模式评估、知识表示等6个主要步骤。由于它的工作量大,过程复杂,难于被管理员理解等缺点,阻碍了它直接为日志分析服务的进程。管理员在查看、分析日志时,主要集中在几个方面:首先,利用结构化查询语言(SQL)进行各种操作,如带有各种条件的查询、汇总、均值、最大、最小、平均值等;其次,是管理员以自己熟悉的逻辑拓扑结构为视角进行的查询和统计功能,以及对日志进行智能化分割、聚合从而对日志进行全面认识等工作;第三,是对时序进行分析,包括对特定时序的查询和时序模式的发现等。由于日志都具有时序性,有明确的时间戳,并且很多时序中包含着事件的因果关系,因此,这方面的需求是普遍性的;第四,是对发生次数、重要程度等重要主题的深入分析。
因此,建立智能化***帮助管理员在短时间内全面地掌握日志信息,在大量的日志信息中发现问题的真正原因进而进行故障诊断、排除以及***修复,并在大量的日志信息中发现有用的模式,用于未来的分析和预测,是一项迫切的需求。
发明内容
有鉴于此,本发明的目的在于提供一种日志分析***及基于该***的分析方法,以便于管理员快速地对日志进行掌握和分析。
为达到上述目的,本发明的技术方案是这样实现的:
一种日志分析***,该***包括主控模块,数据库连接模块、初始化模块、输入语句的检查和保存模块、编译和功能分发模块、执行模块、显示模块和退出模块,其中
所述主控模块,与数据库连接模块、初始化模块、输入语句的检查和保存模块、编译和功能分发模块、执行模块和退出模块分别直接相连;该主控模块接收用户输入的语句信息,并将该语句信息传递给相应的模块;或者,接收编译和功能分发模块传送的代号信息,并按该信息设置显示格式;或者,接收执行模块传送的执行结果信息并按照显示格式传送给显示模块;
所述数据库连接模块,接收来自主控模块的用户输入的语句信息中的数据源名称,并检查其是否合理,如果合理则将用户输入的数据源名称传送给主控模块,否则将提示用户输入有误的信息传送给主控模块;
所述初始化模块,接收来自主控模块的初始化指令,对所有视图中的树及其相应的标签进行初始化,设置输入语句记录的起始点,开辟常用的数据空间,并将设置的输入记录的起始点传送给主控模块;
所述输入语句的检查和保存模块,接收来自主控模块的用户输入的语句信息,检查用户输入的语句是否为无意义的空白语句,如果是,则将提示用户其输入有误,并把错误的的信息类型传送给主控模块,否则保存用户输入的该语句,同时将用户输入的语句传送给主控模块;
所述编译和功能分发模块,与执行模块直接相连,接收来自主控模块的用户输入语句的信息,解析用户输入的语句并计算语句中的表达式,且将用户输入的语句转换为执行模块所能够识别的标准形式的参数后,传递给执行模块,同时将执行模块的代号信息传送给主控模块;
所述执行模块,接收编译和功能分发模块传送来的标准参数形式的处理信息,进行相应处理,并将执行结果信息传送给主控模块;
所述显示模块,接收主控模块传送来的处理结果或报错信息,并按照主控模块设置的显示格式显示给用户;
所述退出模块,接收来自主控模块的退出指令,释放开辟的数据空间后,退出日志分析***。
较佳地,所述的执行模块至少包括:SQL执行模块、树和树视图操作模块、序列查找模块、上钻/下钻模块、聚类模块和序列模式挖掘模块,其中
所述SQL执行模块,接收来自编译和功能分发模块的处理信息,对数据库中的记录进行查询、***、更新或删除操作,并将处理结果返回给主控模块;
所述树和树视图操作模块,接收来自编译和功能分发模块的对树和树视图进行操作的信息,应用语句对相应的树信息进行编辑,并将编辑结果传送给主控模块;
所述序列查找模块,接收来自编译和功能分发模块的序列查找信息,在预先选定的事件列中查找所有与预先给定序列或序列对匹配的事件列,并给出该匹配的事件列发生的开始时间,同时计算该匹配事件列的出现次数以及在整个事件列中所占的比例,或计算当第一个事件列发生的情况下,第二个序列发生的可能性,将所有的计算结果和每个序列发生的开始时间都传送给主控模块;
所述上钻/下钻模块,接收来自编译和功能分发模块的上钻或下钻信息,利用预先创建的分类树,将用户指定的待统计的字段与树结构中的节点相匹配,将匹配的统计结果传送给主控模块;
所述聚类模块,接收来自编译和功能分发模块的聚类信息,对数据库中的信息进行汇总,并应用快速聚类算法计算出一个或一个以上的聚类,同时单独列出不构成聚类的记录,将聚类结果和不构成聚类的记录传送给主控模块;
所述序列模式挖掘模块,接收来自编译和功能分发模块的序列模式挖掘信息,应用数据挖掘算法从数据库中挖掘出给定事件的所有序列模式或序列对模式,并将挖掘结果传送给主控模块。
较佳地,该***进一步包括:分类树处理模块,该模块与主控模块直接相连,接收来自主控模块的对树和树视图进行操作的信息,应用图形化菜单对树信息进行编辑,并将编辑结果传送给主控模块。
较佳地,所述树结构的类型为字符串型、离散数值型、连续数值型或时间日期型。
较佳地,所述初始化模块开辟的常用数据空间至少包括存放用户输入语句序列的空间和存放树结构的空间。
一种对日志进行分析的方法,该方法包括以下步骤:
a、用户预先建立树结构的逻辑拓扑结构,并使树结构中的内容与数据库中的一个或一个以上字段相对应;
b、启动日志分析***,建立该日志分析***与用户指定数据库的连接,并进行***初始化;
c、日志分析***采集到用户输入的语句信息后,自动对其进行解析,并判断解析结果是否与逻辑拓扑结构有关,如果是,则根据解析结果,对树结构进行处理,或按照树结构对数据库中的数据进行分析,将分析结果显示给用户;否则,根据解析结果,直接对数据库中的数据进行操作,并将操作结果显示给用户。
较佳地,步骤c所述日志分析***采集到用户输入的语句信息后,进一步包括:判断用户输入的语句信息是否有效,如果是,则继续执行后续步骤,否则提示用户输入信息有误后,结束。
较佳地,步骤c所述用户输入的语句信息为普通的SQL执行语句,则日志分析***判断其与逻辑拓扑结构无关后,将解析后的结果传送给SQL执行模块进行数据操作,并将操作结果显示给用户。
较佳地,步骤c所述用户输入的语句信息为序列查找语句,则日志分析***判断其与逻辑拓扑结构有关后,将解析后的结果传送给序列查找模块,由序列查找模块按照树结构对数据库中的数据进行查找,将查找结果显示给用户。
较佳地,所述序列查找模块的处理步骤为:
将数据库中某个域的值定位在树中的相应节点上,并根据用户输入的时间列和时间间隔,对给定的事件序列和事件序列对进行匹配查找,将匹配的事件序列和事件序列对以及其起始时间显示给用户。
较佳地,步骤c所述用户输入的语句信息为上钻/下钻语句,则日志分析***判断其与逻辑拓扑结构有关后,将解析后的结果传送给上钻/下钻模块,由上钻/下钻模块按照树结构进行上钻/下钻处理后,将处理结果显示给用户。
较佳地,所述上钻/下钻模块的处理步骤为:
将待执行上钻或下钻操作的树结构解析为标准形式,并根据用户输入的语句,确定数据库中的待查找字段,并将待查找字段与树结构的节点进行匹配,将匹配结果统计后显示给用户。
较佳地,步骤c所述用户输入的语句信息为聚类语句,则日志分析***判断其与逻辑拓扑结构有关后,将解析后的结果传送给聚类模块,由聚类模块按照树结构进行聚类处理后,将聚类结果显示给用户。
较佳地,所述聚类模块的处理步骤为:
将数据库中某个域的值定位在树中的相应节点上,并根据用户输入的语句,确定的主题列和待分析的列,从数据库中查找到主题列和待分析的列的原始归类信息后,应用聚类算法对原始的归类信息进行聚类计算,将聚类结果以及未能聚类的记录显示给用户。
较佳地,步骤c所述用户输入的语句信息为序列模式挖掘语句,则日志分析***判断其与逻辑拓扑结构有关后,将解析后的结果传送给序列模式挖掘模块,由序列模式挖掘模块按照树结构对数据库中的数据进行挖掘处理,将挖掘结果显示给用户。
较佳地,所述序列查找模块的处理步骤为:
将数据库中某个域的值定位在树中的相应节点上,并根据用户输入的时间列和时间间隔,对给定的事件序列和事件序列对,应用数据挖掘算法从数据库中挖掘出给定事件的所有序列模式或序列对模式,将挖掘结果显示给用户。
应用本发明,在SQL语言的基础上创建一门新的语言,并利用该语言建立一个用于对安全日志进行查询、分析的日志分析***,管理员应用该日志分析***即可快速地对日志进行掌握和分析,如进行时间或时序的查找分析,对重要的主题进行上钻、下钻或聚类分析等,从而进行故障诊断、***修复、以及预测报警规则设置等操作。另外,在本发明的日志分析***中,还嵌入了分类树结构的图形化界面,使得用户可以利用图形化界面执行部分操作,从而减少输入操作量;同时,利用分类树结构的图形化界面可以更直观、更形象化地查看查询、分析的结果。
附图说明
图1为基于TTT语言的日志分析***的整体构架示意图;
图2为本发明的日志分析***的初始化界面;
图3为本发明的日志分析***在执行过程中的一个界面;
图4为用户按照自己熟悉的组织结构而自然建立的分类树示意图。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细说明。
为了帮助管理员及时准确地掌握日志信息,需要建立一门新的语言,使它既具有数据挖掘和联机分析的功能,又略去复杂的、难以理解的过程,并且使用的方式和难易程度和现有普遍使用的SQL语言类似。TTT(Time-Topology-Topic)语言因此而产生。
一门全新的语言在短时间内很难被用户接受,因此,TTT语言以人们广为熟知的SQL语音为基础,保持了SQL语音的所有保留字,并最大程度地保留了SQL语音的风格;并在此基础上,引进新的保留字和功能,在新的功能中尽量使用SQL原有的保留字,使其具有新的含义,而尽量少地开辟新的保留字。
由于本发明所述的日志分析***是建立在TTT语言基础之上的,因此,前提条件是定义TTT语言的词法、语法和句法:
对TTT语言的词法、文法合语法的定义最大限度地保持SQL风格和语法规范,这样,虽然TTT语言是基本的SQL的超集,但仍然能很快被用户理解、接受和使用;即使用户在短时间内无法掌握TTT语言,也可以输入基本的SQL语句进行查询。为了达到这个目的,本发明是这样做的:(1)一个新的功能最多使用一个新的保留字,或者使用原来SQL的保留字。例如,当需要聚类分析时,使用保留字“episode on”完成这项新功能,且“where”子句,“from”子句的意义与SQL中的意义完全相同。(2)如果意义相似,但又不至于发生歧义,则尽量采用SQL中的保留字。例如,当要查看所有树结构的信息时,使用“select树名称列表”,这与SQL的“select...from”的形式很类似,意义也类似,但又不至于产生歧义。又例如,“order by”在SQL中的本意是把要显示的记录按照列的序进行升序、降序排列,但在TTT的聚类、上钻或下钻语句中,“order by”的意义是对聚类、上钻或下钻得到的项进行排列,意义的转变是很自然的,很容易被用户理解和接受。
TTT语言包含了SQL所有的保留字,在此基础上,新开辟了sequence,time by,interval by,topic,support by,confidence by,view,path to,clusterby,children(或child)of,on等11个保留字,并且保留花括号,在数据库与树同时存在的操作中,把树、子树或路径放置到一对花括号之间。
如果直接查询数据库的一个或多个表,必须使用保留字“from”;如果操作和数据库没有联系,则必须不出现关键字“from”;当输入语句与时序相关时,例如查询序列和对序列进行挖掘,必须选定时间列,语法为“timeby+列名称”,该子句的位置可以在“from”子句之后的任何位置;当进行上钻或下钻,或进行聚类时,要选择一个“topic”列,作为分析的主题,语法为“topic by+列名称”,这个子句可以放在“from”子句之后的任何位置,但是,“topic”子句可以缺省,当该子句缺省时,默认为数据表中的每一条纪录对应的主题值为1,以此作为每条记录出现的频率;如果进行普通的SQL查询,则“order by”子句保持原来的格式和意义,如果进行上钻或下钻,则“order by”子句的语法和显示格式与SQL语言的表现形式相同,但表达的意义并不是按照选定的列进行排序,而是按照选定的列所对应的分类树进行排序;进行时序分析时,需要限定一个时间间隔,其语法为“intervalby?hours?minutes?seconds”,其中的问号表示一个正的小数,也可以用时、分、秒的任意长度的首字母缩写;当进行序列查询或挖掘时,需要规定支持度,其语法为“support by?%”或“support by?”,其中的问号表示一个正的小数;同样的,当进行序列查询或序列挖掘时,还要规定可信度,其保留字为“confidence by”,语法与“support by”子句的语法类似。
TTT语言与SQL语言中的规定相同,表名和列名都不区分大、小写,但分类树名称、分类树种的项以及分类树种的路径区分大、小写。除非要对分类树进行列表、显示、保存或删除,否则分类树、子树、以及分类树中的路径都要写在一对花括号之间。
在TTT语言的基础上建立的TTT日志分析***能够实现对TTT语言的解析、编译、执行以及结果显示。
本发明的日志分析***适用于任何数据库,而且对于与时序有关的数据库更能体现出其优点。
图1所示为基于TTT语言的日志分析***的整体构架示意图。该***包括主控模块101,数据库连接模块102、初始化模块103、输入语句的检查和保存模块104、分类树处理模块105、编译和功能分发模块106、SQL执行模块107、树和树视图操作模块108、序列查找模块109、上钻/下钻模块110、聚类模块111、序列模式挖掘模块112、显示模块113和退出模块114,其中
主控模块101,与数据库连接模块102、初始化模块103、输入语句的检查和保存模块104、分类树处理模块105、编译和功能分发模块106、SQL执行模块107、树和树视图操作模块108、序列查找模块109、上钻/下钻模块110、聚类模块111、序列模式挖掘模块112、显示模块113和退出模块114分别直接相连,该主控模块101接收用户输入的数据源名称的语句信息,并将该信息传递给数据库连接模块102,或者,接收编译和功能分发模块106传送的代号信息,并按该信息设置显示格式;或者,执行模块即接收SQL执行模块107、树和树视图操作模块108、序列查找模块109、上钻/下钻模块110、聚类模块111或序列模式挖掘模块112的执行结果信息并按照显示格式传送给显示模块113;接收用户输入的进行各种操作的语句信息,并将该信息传递给编译和功能分发模块106;主控模块101主要用于协调各个模块之间的关系,规定并建立模块之间的接口,控制数据流从输入到输出显示的整个过程,建立从树视图到TTT语句之间的映射关系,以保证利用树视图能够产生TTT语句;主控模块101还统一管理错误和异常,包括编译查找的词法、语法、句法错误,以及程序运行过程中发生的异常;另外,主控模块101还负责对输出为输出格式进行参数设置等一些工作。
数据库连接模块102,接收来自主控模块101的用户输入的数据源名称(ODBC)的信息,并检查其是否合理,如果合理则将用户输入的数据源名称传送给主控模块101,否则将提示用户输入有误的信息传送给主控模块101;数据源选定后,所有的数据库信息将从选定的数据源中获取,除非用户重新选择数据源。
初始化模块103,接收来自主控模块101的初始化指令,对所有的树视图及其相应的标签进行初始化,即将所有的树视图及其相应的标签设置为“空分类树”,如图3所示,设置输入记录的起始点,开辟常用的数据空间,包括存放用户输入语句序列的数据空间、存放树结构的数据空间等,并将设置的输入记录的起始点,即用于“前进”、“后退”的起点,传送给主控模块101。
输入语句的检查和保存模块104,接收来自主控模块101的用户输入的语句信息,检查用户输入的语句是否为无意义的空白语句,如果是,则将提示用户输入有误的信息传送给主控模块101,否则保存用户输入的该语句,以便将来实现“前进”和“后退”的操作,同时将用户输入的语句传送给主控模块101。
分类树处理模块105,接收来自主控模块的对树和树视图进行操作的信息,应用图形化菜单对树信息进行编辑,并将编辑结果传送给主控模块101。
参见图3所示的菜单,该分类树处理模块105主要支持用户对该菜单的左半部分的操作。例如,通过在所选定树的项上点击鼠标右键,根据弹出的浮动菜单而实现项重命名,添加子项,导出路径即将从根节点到选定项的路径或子树导出到该菜单右上方的语句输入框,且路径或子树存放在一对花括号之间,拷贝,粘贴,上移即选定的项及其所有子项作为一个整体在父节点中上移一个位置,下移即选定的项及其所有子项作为一个整体在父节点中下移一个位置,和删除;或者,对菜单左下部分的“对保存过的树进行操作”,该操作包括显示选定的树,把文件中保存的树全部显示和删除分类树的操作;或者,对菜单左下部分的“对选中的视图进行操作”,该操作包括保存当前视图中的分类树,清除视图中的树和对当前视图中的树进行检查。
通过该模块体现出本发明的一个显著特点,即图形化交互方式。图形化交互方式可以弥补语句交互的两个不足:(1)对于由语句交互生成的难以被用户理解的结果,可以在树视图中查看。例如,当聚类得到一条结果“10.1.10.网段内部发生了500次攻击”时,可以在树视图中查看这个网段在整个网络中的位置,并且可以查看拥有这个网段的部门的名称。(2)当需要用户输入层次较深的子树语句时,由于语句过长极易造成输入错误,此时,利用该分类树处理模块105的路径导出功能即可方便地解决这个问题。如图3所示,用户为了表达示图中的子树,需要在输入框中输入{Source->10.->10.1.->10.1.45.->10.1.45.101_150}。为了避免大量输入,用户可以在树视图中相应子树上的节点单击鼠标右键,选择弹出菜单中的“exportpath”功能项就可以把子树导入到输入框的焦点位置。
编译和功能分发模块106,与SQL执行模块107、树和树视图操作模块108、序列查找模块109、上钻/下钻模块110、聚类模块111和序列模式挖掘模块112直接相连,接收来自主控模块101的用户输入语句的信息,解析用户输入的语句并计算语句中的表达式,且将用户输入的语句转换为执行模块所能够识别的标准形式的参数后,传递给相应的模块,同时将接收待处理数据信息模块的代码信息传送给主控模块101。
该编译和功能分发模块106主要用于解析select,order by,group by,having,delete,update,insert,from等SQL语言保留字,和sequence,timeby,interval by,topic by,support by,confidence by,view,path to,clusterby,children of等TTT语言的保留字,从而判断输入语句的种类为SQL执行语句、树操作语句、序列查找语句、上钻或下钻语句、聚类语句、以及序列模式挖掘语句中的哪一种,并按照解析的结果,划分待执行操作的种类。例如,当输入语句的首词为“select”时,语句会有5种类型的可能:如果前三个词为“select path to”则为路径列表语句;如果在引号和花括号之外没有“from”,则为树列表语句;如果在“select”子句中没有花括号和树名称,则该语句为普通的SQL语句;如果有花括号和树名称,则为上钻下钻语句;如果都不是,则报错。如果所解析的语句中有需要用户指明且不允许缺省的数值但用户没有指明的情况,则该模块向主控模块101发送用户输入错误的信息,如果所解析的语句中有需要用户指明且允许缺省的数值,而用户没有指明的情况,则该模块将缺省值添加到编译结果中。例如,在序列模式挖掘功能中,需要用户输入支持度,如果用户没有输入,则该模块会给出一个缺省的支持度。该编译和功能分发模块106还要对各个列表进行标准化转换,因为只有标准化了的名称才能被执行模块使用。例如,如果输入语句为“select......from table1 t1,table2 as t2......”,则该编译和功能分发模块106将把“from table1 t1,table2 as t2,table3......”中的数据表名称逐个解析,最后得到标准化的结果:数据表的名称有3个,分别为“table1”,“table2”,“table3”;其中第一个、第二个数据表有别名,分别为“t1”,“t1”,第三个数据表没有别名。同时该编译和功能分发模块106还要解析输入语句种的变量序列、算术表达式序列、逻辑表达式序列、数据库的表名称序列、表的列名称序列。而且,该编译和功能分发模块106该对那些在能够运行前求得最终结果的算术表达式、逻辑表达式进行运算,对那些用非数值形式表达的数值,进行换算,以获取最终的数值。例如,如果时间间隔为3minutes 10.5seconds,则要换算成190.5(seconds);如果支持度为20%,则要换算成0.2。最后,该编译和功能分发模块106根据解析的语句类型(树结构操作、普通SQL查询、时序分析、上钻或下钻,以及聚类等等),把计算得到表达式的值、***缺省值、转换得到的值以及变量序列、算术表达式序列、逻辑表达式序列,以及表名称、表的列名称等直接传递给各个执行模块-SQL执行模块107、树和树视图操作模块108、序列查找模块109、上钻/下钻模块110、聚类模块111、序列模式挖掘模块112等,进而在这些专职模块中进行相应处理,同时,编译和功能分发模块106将执行模块的代号传递给主控模块101。
SQL执行模块107,用于处理纯粹的SQL语句,其接收来自编译和功能分发模块106的处理信息,对数据库中的记录进行查询、***、更新或删除操作,并将处理结果返回给主控模块101;在本模块的执行过程中,要把语句中的各个表名和列名以及其数量解析出来,传递给主控模块101。通过预先设置好格式的显示模块直接显示。该SQL执行模块107所执行操作的具体过程如下:
查询记录:首先要从查询语句中解析出列名称或其别名,并将该列名称或其别名传给主控模块,以便结果显示时使用,然后建立查询ODBC,与数据库中的特定表格建立联系,从而从表格中读取数据,把得到的数据及数据格式传送给主控模块,以便在结果显示时使用;***记录:直接调用ODBC函数完成操作;更新纪录:首先要进行统计汇总,查看将要更新多少条记录,把该数值传送给主控模块,然后直接调用ODBC函数完成操作;删除纪录:首先要进行汇总统计,查看将要删除多少条纪录,然后直接调用ODBC函数完成操作。
树和树视图操作模块108,接收来自编译和功能分发模块106的对树和树视图进行操作的信息,对相应的树信息进行编辑,并将编辑结果传送给主控模块101;该树和树视图操作模块108与分类树处理模块105的功能相似,但本模块用于执行从图3所示菜单的右上方输入的TTT语句,而不支持在图3所示菜单的左半部上通过图形点击输入的命令,即本模块通过语句交互的方式完成查询、分析的交互***。在本发明中,语句交互是主要的方式,图形化交互是辅助的方式。图形化的交互方式不如语句交互方式灵活和功能强大。但将两种交互方式结合并发挥各自的优势,是本发明的一个特点和优点。该树和树视图操作模块108能够处理6种命令,包括:(1)对文件中保存的树进行列表。输入语句的语法为“select树名称1,树名称2...”或“select*”,各个树名称在编译和功能分发模块106中已经被解析成标准形式,然后,通过主控模块101将所选择的树的名称、类型、树深度、以及项的总数显示在图3所示菜单的右下部分。(2)把文件中保存的树在树视图中显示。输入语句的语法为“view树名称1 on n1,树名称2 on n2...”或“view*”,在编译和功能分发模块106中,树名称已经被解析成标准形式,通过主控模块101的接口,可以把文件中保存的树结构显示到相应的树视图中。(3)清除视图。输入语句的语法为“clear n1,n2,...”或“clear*”。根据编译和功能分发模块106解析得到的树视图序列的标准化形式,该树和树视图操作模块108将选定的视图清除。(4)把视图中的分类树结构保存到文件中。输入语句的语法为“save n1,n2,...”。根据经编译和功能分发模块106转换所得到的标准化的结果,该树和树视图操作模块108通过主控模块101将所选择的视图中的树结构存放到文件中。(5)删除文件中保存的分类树。输入语句的语法为“delete树名称1,树名称2,...”,根据编译和功能分发模块106解析得到的标准化的树名称列表,逐一删除文件中保存的树。并且在删除过程中提示用户确认。(6)查找某个项在树中的、从根节点出发的路径。输入语句的语法为“select path to项名称from树名称”,其中“项名称”和“树名称”都是通过编译和功能分发模块106解析而得到标准形式。主控模块101会通过在树中搜索路径,并且把路径显示出来。显示的路径有时不止一条。
序列查找模块109,接收来自编译和功能分发模块106的序列查找信息,在预先选定的事件列中查找所有与预先给定序列或序列对匹配的事件列,并给出该匹配的事件列发生的开始时间,输入语句的语法为“selectsequence(事件列表)from数据库表名称列表time by时间列interval by时间间隔count by记录事件多次发生的列where子句”或selectsequence(事件列表)->sequence(事件列表)from数据库表名称列表timeby时间列interval by时间间隔count by记录事件多次发生的列where子句”。按照指定的“时间列”得到标准化的时间列—时间戳;然后把事件列标准化为一组整数列。在此基础上,对于单个序列,则使用匹配算法来查找每一个与给定序列吻合的序列;对于序列对,则进行二次匹配,并计算出当第一个事件列发生的情况下,第二个序列发生的可能性,然后根据所有匹配的结果,计算序列的出现次数以及在整个事件列中所占的比例,将所有的计算结果和每个序列发生的开始时间都传送给主控模块10l。
上钻/下钻模块110,接收来自编译和功能分发模块106的上钻或下钻信息,将用户选定的记录集合用所建的分类树的模式查看,且分类树需要用保留字“on”与数据库中某个数据表的列进行绑定,输入语句的语法为“select树或子树列表from数据库表名称列表topic by主题列where子句”,其中“树或子树列表”的每一项都存放在一对花括号之间,并且在花括号之后需要有绑定数据表的列的短语“on列名称”;如果要下钻,则花括号前面添加关键词“children of”;如果要上钻,则花括号中的路径转换为父节点。由用户选择数值型的主题列,如果主题列缺省,则主题列的值全部置为1;通过查询数据库中的数据表,返回所选行的各个值,然后判断这些值是否属于相应的树或子树,如果是,则把“topic”值增加,将上钻或下钻的结果传送给主控模块101。
聚类模块111,接收来自编译和功能分发模块106的聚类信息,应用已有的一个或多个分类树,与数据表中的列绑定,形成一种综合的视角,让用户全面地查看数据库中的内容,但又不至于丢失过多的细节。输入语句的语法为“cluster by树或子树列表from数据库表名称列表topic by主题列where子句order by排序列表”;该聚类模块111按照用户预先选定的若干棵分类树对数据库中的信息进行汇总,并统一成标准形式后,应用快速聚类算法计算出一个或一个以上的聚类,同时单独列出不够成聚类的记录,将聚类结果和不够成聚类的记录传送给主控模块101;其中该模块中涉及到的“order by”子句对比SQL中的“order by”子句的意义有了转意:从最初的规定记录显示的顺序转意为按照分类树或主题的顺序显示。
聚类之后,如果用户想查看某个聚类的细节,则可以用下钻的模式对所得到的结果继续进行分析;也可以继续用聚类的方式进行分析。同样地,在用户上钻或下钻以后,如果想查看某个条目的细节信息,也可以用下钻或聚类两种方式继续分析。
序列模式挖掘模块112,接收来自编译和功能分发模块106的序列模式挖掘信息,找出给定事件列的所有序列模式或序列对模式,作为候选的规则(知识)提供给用户,用于将来的规则设置、分析和预测。输入语句的语法为“episode on事件列from数据表列表time by时间列interval by时间间隔where子句support by最小支持度confidence by最小可信度”,其中,“时间列”是不能缺省的,用户必须指定时间列;“interval by”短语也不能缺省;但“support by”和“confidence by”短语可以缺省,当缺省时,编译和功能分发模块106把***默认的值赋予这两个短语。该序列模式挖掘模块112根据解析的各个列表和参数,包括数据表的名称序列,各个列名称构成的序列,各个树结构或子树结构形成的序列,事件列和时间列等列表,以及数据表的数目,列的数目,支持度和可信度等参数,与数据库之间建立连接,然后分别把事件列和时间列标准化(指编程语言可以识别的形式),在此基础上,采用大项集的快速搜索(Apriori)算法从数据库中挖掘出所有超过给定支持度和可信度的模式,并将挖掘结果传送给主控模块101。
显示模块113,接收主控模块101传送来的处理结果和报错信息,并按照主控模块101设置的显示格式显示给用户,而不需要逐一安排显示格式;
退出模块114,接收来自主控模块101的退出指令,整理保存分类树文件,释放开辟的数据空间后,退出日志分析***。
本发明的日志分析***具有较强的可移植性,不但可以通过API把日志分析***嵌入到其它***中去,而且还可以作为单独的软件供用户使用。本发明的这种可移植性是这样实现的:主控模块接收到用户输入的数据库的ODBC名称后,通过数据库连接模块建立日志分析***与用户指定的数据源的连接,并一直维护该连接,直至下一次新连接为止。只要用户输入不同数据库的ODBC名称,即可与不同的数据源相连,并且所有的连接都是通过主控模块来控制。这样,利用该日志分析***可以与不同的数据库进行方便的连接,因而有很好的移植性。例如,如果有一个数据库的ODBC名称为IDS_Log_ODBC,则用户直接输入该名称后,主控模块即可控制日志分析***与该数据源建立连接,并对该数据源进行查询和分析。
下面具体说明应用本发明的日志分析***对安全日志进行分析的方法。
该方法的思路是:用户预先建立树结构的逻辑拓扑结构,并使树结构中的内容与数据库中的一个或一个以上字段相对应;启动日志分析***,建立该日志分析***与用户指定数据库的连接,并进行***初始化;日志分析***采集到用户输入的语句信息后,自动对其进行解析,并判断解析结果是否与逻辑拓扑结构有关,如果是,则根据解析结果,对树结构进行处理,或按照树结构对数据库中的数据进行分析,将分析结果显示给用户;否则,根据解析结果,直接对数据库中的数据进行操作,并将操作结果显示给用户。
上述实现方法主要是通过主控模块101协调各个模块完成的,下面以安全日志数据库为例,具体说明主控模块101贯穿在日志分析***运行的整个过程中:
(1)当用户启用TTT日志分析***时,主控模块101向数据库连接模块102发送连接指令,数据库连接模块102检查主控模块101传送来的用户输入的ODBC名称合法后,将该名称传送给主控模块101,主控模块101收到数据库连接模块102传来的该信息后,保存该用户输入的名称,并建立日志分析***与该数据库的连接,从而使以后的所有分析工作都基于给定的数据库进行。
(2)***初始化后,主控模块101将输入记录的点设置为0,并且每执行一次都保存输入的语句,并且使记录的数值增加1,便于以后的“前进”或“后退”的操作。
(3)分类树处理模块105只处理文件中保存的分类树和视图中的分类树,并且通过主控模块101,使文件中的树和视图中的树联系起来。
(4)输入语句的检查和保存模块104对用户输入的语句进行检查,并将有意义的语句传递给主控模块101,由主控模块101进行相应的记录,如记录用户已输入了多少有效语句,记录所保存的当前语句所处的位置等,然后将传送给编译和功能分发模块106,并由编译和功能分发模块106进行解析和标准化处理后传送给各个执行模块。
(5)各个执行模块对收到的语句进行相应处理,并将处理结果返回给主控模块101,由主控模块101将处理结果传送给预先设置好显示格式的显示模块113,显示给用户。例如:如果输入语句为普通的SQL语句,则主控模块101无需在输出格式设定时为主题列预留空间;如果输入语句为上钻或下钻,或聚类,则主控模块需要为输出格式的主题列预留空间。
(6)退出模块114接收到来自主控模块101的退出信息后,释放保留数据空间和结构后,退出该日志分析***。
本发明所采用的逻辑拓扑结构为树结构。把树结构作为本发明中的逻辑拓扑有以下几方面的优越性:(1)它符合人们理解、掌握事物的规律和特点,且建立或编辑的工作简单。只要按照用户自己熟悉的情况从上到下依次创建项目即可。例如,图4所示为由用户自己创建的一个分类树。(2)通过树结构不但可以实现数据挖掘工具的上钻或下钻等功能,还可以通过树结构查看关联规则,从而避免了建立数据立方体所需要的一系列复杂的过程。(3)从分类树的视角将数据库中的数据进行整理后,便会得到关联规则等一些知识。例如,如果按照图4所示的分类树,把IDS日志库中的攻击记录进行整理,可以得到:外网IP1攻击内网部门1的比例为99%,而攻内网其它部门的比例为1%。这就可以构成一条关联规则。
本发明对分类树的创建、修改、清除、删除、保存等工作,都实现得简单有效,这可以使用户方便地进行树操作,从而易于接受这种结构。在“主控模块”中存有树结构的一个剪贴板,这个剪贴板是独立的树结构剪贴板,在用户启用日志分析***时创建,在用户退出日志分析***时销毁。例如,如果图4所示的树结构在日志分析***的某个树视图中从上而下逐层创建,内网的部门1中有5个IP地址,内网的部门2中有6个IP地址,而用户已经创建了部门1及其所有的IP地址。这时,用户可以在部门1上点击鼠标右键,选择拷贝功能,然后在“内网”这个项上点击右键,选择粘贴功能即可。在后台,这个处理过程是这样实现的:(1)清空树结构剪贴板。(2)将部门1及其所有子项按照原有的拓扑关系复制到树结构剪贴板上。(3)将剪贴板上的内容按照原来的逻辑拓扑关系复制到内网中作为其子项。拷贝和粘贴完成后,用户可以在部门2及其子项上用“重新命名表签”的功能编辑标签。并且,还可以用“添加子项”的功能添加部门2的第6个IP地址。
数据库中的数据类型多种多样,本发明的树结构也有相应的类型与之对应。TTT语言和基于该语言的日志分析***中的树结构类型共有4类:字符串型,离散数值型,连续数值型和时间日期型,树视图和树类型是同时在用户界面中存在的(参见图3左上部分的树结构视图和列表框,它们分别盛放树视图和树类型)。本发明的一个显著特点是:4种类型树结构的内容完全在标签中表达,无需在后台存储其它内容。这样便于用户通过树视图清楚完整地掌握树结构。具体地,树结构的每个标签都有两部分构成:条件部分和名称部分。两个部分用本发明规定的标签内容分隔符“*|*”分隔。如果标签中不出现分割符,则表示标签中的内容既是条件,又是名称。例如,如果一个标签为“[6,15]*|*少年”,则表示该标签的名称为“少年”,条件为“年龄在6岁到15岁之间”。对于时间日期型的树结构,其标签的条件部分比较复杂,但形式是一致的:一对括号内包含一对数字,该括号可以是中括号,也可以是小括号,左右类型可以不对称,其用法与数学中的区间用法一致,两个数字之间是一个代表时间单位种类的字母,该字母可以是y、m、d、h、i、s、w,其分别代表年、月、日、时、分、秒、星期。利用上述区间和字母即可表达任意的时间。例如,工作日可以表示成“[1w5]*|*工作日”,非工作日可以表示成“[0w0][6w6]*|*周末”。用户按照这种规则构建分类树后,日志分析***就可以对其中的内容进行解析了。具体的解析的步骤如下:(1)读取到分类树的类型。由于每棵树的类型与树之间都是绑定的,因此,只要确定待解析的树,即可直接读取到该分类树的类型。(2)根据分类树的类型解析分类树的每个节点,其中,每棵树的节点也称作节点标签。同样的标签内容,对于不同的树结构类型,其意义是不一样的。例如,如果某个节点标签为“036”,则对于字符串型的分类树,这个标签就表示“036”这个字符串,而对于离散数值型的树结构,这个标签表示正数值“36”。(3)通过解析标签的条件部分,可以把条件转换成标准形式。例如,对标签“[0w0][6w6]*|*周末”可以解析得到共有2个区间,第一个区间为关于“星期”的左闭右闭区间,左端点为0,右端点为0;第2个区间为关于“星期”的左闭右闭区间,左端点为6,右端点为6;标签的名称为“周末”。
当标签被解析成标准形式后,就可以判断数据库中的一个值是否属于一个节点标签。还考虑上面的例子,如果数据库中时间列为“2003-08-07 14:13:25”,则可以解析得到其“星期”的值为4,这个值与“[0w0][6w6]*|*周末”节点标签两个区间依次比较,只要其属于上述节点标签中的两个区间中的一个,那么“2003-08-07 14:13:25”就属于这个节点标签。但结果它并不属于这个节点标签。
如果要进行上钻或下钻,或聚类等工作,就必须判断数据库中某个域(field)的值是否属于一棵树,并且定位它在树中的位置。这个工作可以简单地实现:每个标签逐一匹配,但这样做的工作量大,效率低。本发明涉及到的匹配处理过程是这样实现的:对于字符串型的分类树和离散数值型的分类树,首先要把各个标签排序,然后对于数据库中的一个域,采用二分查找的方法提高查找、匹配效率;对于连续数值型和时间日期型的分类树,只需匹配从根节点到待匹配的节点的路径上的所有的项。这样处理的优点是:在用户建立分类树时,父节点已经限制了的条件,在子节点中无需重复,使得工作量减少,标签更加简洁;另外,大大降低定位时的匹配时间,提高了效率。
如果只涉及直接的数据库操作,如对数据库的查询、***、更新或删除操作,则直接调用SQL模块进行操作即可,其执行步骤与现有的SQL执行步骤相同。
如果只涉及到对文件中保存的树或树视图进行操作,如保存、显示或删除等,而不对数据库进行操作,则直接调用树和树视图模块108或分类树处理模块105即可实现。
在数据库中按照一定的时序和时间间隔查询某个事件序列是一件很困难的事情,用SQL几乎是无法实现的。有些时序分析工具可以把整理好的数据进行时序分析,但这样的灵活性差,因为数据的抽取整理与分析之间是分离的,存在着严格的先后顺序。但本发明的TTT语言和TTT日志分析***能够把数据抽取整理与时序分析融合到一个TTT语句中,其抽取和整理过程完全由一个“Where”子句确定,给用户的感觉就像进行做一个SQL查询。具体的融合是这样实现的:首先,由“Where”子句确定日志中记录的范围,例如,要对2003年7月7日之后并且源IP地址位“10.1.45.247”的所有记录进行序列查询,则“Where”子句可以写成“where timestamp>“2003-07-07 00:00:00’and sourceip=‘10.1.45.247”。由此可以看出,这个子句就是数据抽取和整理的子句。第二,限制一个时间列和时间间隔。因为序列查询是与时间相关的,且在一定的时间间隔内才有意义。例如通过“time by timestamp”限定时间列,其意义是:以数据表中的“timestamp”列作为时间列,通过“interval by 30seconds 20 minutes”限定时间间隔,其意义是以1230秒为时间间隔。第三,根据给定的事件序列或事件序列对进行序列查询。例如“sequence(58,99,58)on RuleID”表示在数据库的“ruleid”列上查询攻击事件序列“58,99,058”的事件。
具体的查询是这样实现的:(1)查询数据库中用户指定的事件列的类型。事件类型只包括数值型和字符串型两种。(2)根据查找得到的事件列的类型,进行序列整理。例如,如果列的数值类型为字符串型,则事件序列“58,99,058”的三个事件分别为“58”,“99”,“058”;但是,如果列的数值类型如果为数值型,则三个事件分别为“58”,“99”,“58”。(3)将事件列的所有不同事件映射到从0开始的连续整数。例如,如果事件列中共有6种事件为“U”-“Z”,则把这6种事件分别映射到0-5这6个整数中,其映射关系记录在“主控模块,,中。通过这种映射,可以把事件标准化,并利用事件列标准化的映射关系,将用户要查找的事件序列进行标准化。(4)将用户指定的时间列进行标准化,即将用不同方法表示的时间统一为同一格式。(5)利用“倒序匹配”的方式进行序列查找。这种查找序列的方式是线性的,效率很高。如果要查询的为序列对,则要经过两次匹配。例如,对序列对“sequence(58,99,58)->sequence(59)onRuleID”进行查找,则先匹配查询序列“(58,99,58)”,然后匹配查询序列“(59)”。(6)将匹配查找的结果和事件序列或事件序列对发生的起始时间传递给“主控模块”处理,通过“显示模块”显示给用户。
“上钻或下钻”几乎是任何一个商业智能(BI)工具都必须具备的功能。这个功能可以让用户对大量的数据自上而下地或自下而上地查看和分析。不但可以看到任意层次的汇总数据,同样可以看到任意层次的细节数据。但这个功能的实现之前需要做大量的预处理工作,包括数据的清洗、转换等工作,还包括重要的建立数据立方体(data cube)的工作。建立数据立方体的工作非常复杂,一般人员很难正确地实现。并且,上钻或下钻的层次数目是由数据立方体创建时决定的,上钻或下钻操作均不能超过这个界限。总之,数据和层次结构是严格绑定的。而本发明无需创建数据立方体就可以实现相同的功能。用户需要预先做的工作就是创建分类树。正如前文所述,分类树是按照用户熟悉的逻辑拓扑关系建立起来的,而且建立过程简单、清楚。本发明的另一个优越性是:数据的选取是通过SQL的“where”子句实现的,更具有灵活性;分类树和数据表的列也是在上钻或下钻过程中动态绑定的,也就是说,一个分类树可以为数据表的多个列共同使用,这从另外一个方面增加了该功能的灵活性。例如,在TTT语句“select children of{Ip->10.}on sourceip,{Ip->10.->10.1.}ondestinationip from logdata......”中,同一棵分类树的“IP”可以为数据表“logdata”的两个列“sourceip”和“destinationip”同时使用。
为了通过TTT语句实现上钻或下钻的功能,本发明是这样做的:(1)把树或子树的节点标签的条件进行解析,以得到标准形式。(2)读取数据库中的字段,该要读取的字段已在输入语句的开头部分说明。(3)根据“countby”子句确定要读取的用来统计数目的字段(3)将从数据库中读取的字段与树或子树中的节点进行匹配,如果输入语句中树的前面没有“children of”则只匹配根节点,否则,匹配根节点中的所有子节点。(4)如果所有的树或子树匹配成功,则把用来统计数目的字段的值增加到总的统计信息中去。(5)重复执行上述步骤,直至将所读取字段全部匹配完毕。(6)根据“order by”子句规定的升序或降序,对钻取的结果进行排序。(7)将结果通过“主控模块”统一处理后发送给“显示模块”显示给用户。
下面举例说明上面的步骤:假如用户输入的语句为“select children of{Source->10.}on sourceip,{Destination->10.->10.1.}on destinationip from logdatatime by timestamp topic by times order by sourceip asc”,则首先把2棵子树{Source->10.}和{Destination->10.->10.1.}的条件解析成标准形式。因为这两棵树都是字符串型,所以节点标签中的条件部分就是标准形式。逐行读取数据库中的字段。假设从数据库中读取的3个字段的值分别为“10.2.45.15”,“10.1.45.10”,“3”,即表示的意义为节点“10.2.45.15”对节点“10.1.45.10”进行了三次攻击,则可以判断这个记录属于子树对{Source->10.2.}和{Destination->10.->10.1.},因此,在用来统计数目的字段的值增加“3”。之后,继续执行后续的操作,对那些不能属于某个序对的记录,即没有匹配成功的数据略去。最终可以得到所有序对的统计值,这就是下钻的结果。对结果可以通过与列“sourceip”对应的树“Source”的升序进行排序。最终的结果如下表:
sourceip destinatinationip times
10.1. 10.1. 500
10.2. 10.1. 605
10.3. 10.1. 330
排序的顺序可以在各个查看的列和主题列之中任意选取,并且均可以用升序和降序两种顺序来排序。如果用户要查看{Destinatioin->10.->10.1.}的细节内容,则在它前面增加保留字“children of”即可。
在事件序列查询这个基础之上,还有更高级的需求,那就是让***自动地把所有的有着明显关联的事件序列全部搜索出来,呈现给用户,让用户查看和选择,即实现序列模式挖掘功能。这个问题具有智能性和主动呈现的特点,本发明是这样实现这个功能的。(1)与查看事件序列的做法类似,在数据库里查找事件列和事件列以汇总的次数列,把事件列、事件列标准化。(2)运用聚类算法,如Apriori算法进行数据挖掘。把得到的结果呈现给用户。例如,一次序列挖掘的结果如下表所示:
Left Right Support Confidence
(9999,475) (475) 20% 75%
(475,475) (475) 30% 70%
其中,“9999”和“475”都是事件代号。第一条规则表示:在所有的两个事件构成的事件序列中,左事件(Left)即事件序列(9999,475)占有20%,并且,当这个事件序列发生后,右事件(Left)即事件序列(475)发生的概率为75%;相应的,第二条规则表示:在所有的两个事件构成的事件序列中,左事件(Left)即事件序列(475,475)占有30%;并且,当这个事件序列发生后,右事件(Left)即事件序列(475)发生的概率为70%。
由于安全设备每天要产生大量的日志,因此,管理员很难在短时间内掌握这些日志,这对于发现安全漏洞和安全隐患,从而解决安全问题都是一个障碍。以用户创建的分类树为基础,利用TTT语句,通过聚类算法发现一定数量的聚类,从而使用户对日志由一个全面的理解,是本发明的一项强大的功能,它既能保证用户可以自由地选择日志中的记录集,又能对这些记录集进行高效而精确的聚类。本发明只涉及用日志分析***进行交互,而不涉及聚类算法本身。本发明的聚类功能是这样实现的:(1)与查询事件序列功能类似,通过“where”子句陈述的列选取数据表中的相应字段。(2)通过“topic”子句选定的列确定主题列。(3)通过“cluster by”子句选定的树或子树,以及列名称所组成的列表决定对哪几个列进行分析。(4)查询数据库,得到字段的相应信息。用这些信息在树中匹配,得到原始的归类信息。(6)调用聚类算法得到聚类。(7)把没有能够聚类的记录单独列出来,添加到聚类集合的最后。(8)通过“主控模块”统一处理后把结果传递给“显示模块”显示。
聚类所做的数据查询和汇总的工作与“上钻或下钻”所做的数据查询和汇总的工作类似,不同之处是:它调用聚类算法。例如,图3的右下方的结果就是通过一次聚类得到的。在这个结果之上,还可以继续聚类或下钻。例如,对某一条聚类结果:“10.1.45.101_150非法外联拨号10.1.45.101_150”可以继续通过聚类进行分析。在继续聚类或下钻时,日志分析***利用中间结果加速聚类或下钻的速度。
在本发明的日志分析***中,用户无需关心自己输入的语句是纯粹的SQL语句,还是树操作语句,还是进行数据挖掘操作的语句,在图3左上方同一个输入框里输入不同的语句就可以进行各种不同操作;而且,像在SQL语句中一样,名个子句,如“where”,“order by”,“group by”,“having”,“time by”,“intervalby”,“topic by”等等,都可以放在“from”子句后的任何位置。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (16)
1、一种日志分析***,其特征在于,该***包括主控模块,数据库连接模块、初始化模块、输入语句的检查和保存模块、编译和功能分发模块、执行模块、显示模块和退出模块,其中
所述主控模块,与数据库连接模块、初始化模块、输入语句的检查和保存模块、编译和功能分发模块、执行模块和退出模块分别直接相连;该主控模块接收用户输入的语句信息,并将该语句信息传递给相应的模块;或者,接收编译和功能分发模块传送的代号信息,并按该信息设置显示格式;或者,接收执行模块传送的执行结果信息并按照显示格式传送给显示模块;
所述数据库连接模块,接收来自主控模块的用户输入的语句信息中的数据源名称,并检查其是否合理,如果合理则将用户输入的数据源名称传送给主控模块,否则将提示用户输入有误的信息传送给主控模块;
所述初始化模块,接收来自主控模块的初始化指令,对所有视图中的树及其相应的标签进行初始化,设置输入语句记录的起始点,开辟常用的数据空间,并将设置的输入记录的起始点传送给主控模块;
所述输入语句的检查和保存模块,接收来自主控模块的用户输入的语句信息,检查用户输入的语句是否为无意义的空白语句,如果是,则将提示用户其输入有误,并把错误的的信息类型传送给主控模块,否则保存用户输入的该语句,同时将用户输入的语句传送给主控模块;
所述编译和功能分发模块,与执行模块直接相连,接收来自主控模块的用户输入语句的信息,解析用户输入的语句并计算语句中的表达式,且将用户输入的语句转换为执行模块所能够识别的标准形式的参数后,传递给执行模块,同时将执行模块的代号信息传送给主控模块;
所述执行模块,接收编译和功能分发模块传送来的标准参数形式的处理信息,进行相应处理,并将执行结果信息传送给主控模块;
所述显示模块,接收主控模块传送来的处理结果或报错信息,并按照主控模块设置的显示格式显示给用户;
所述退出模块,接收来自主控模块的退出指令,释放开辟的数据空间后,退出日志分析***。
2、根据权利要求1所述的***,其特征在于,所述的执行模块至少包括:SQL执行模块、树和树视图操作模块、序列查找模块、上钻/下钻模块、聚类模块和序列模式挖掘模块,其中
所述SQL执行模块,接收来自编译和功能分发模块的处理信息,对数据库中的记录进行查询、***、更新或删除操作,并将处理结果返回给主控模块;
所述树和树视图操作模块,接收来自编译和功能分发模块的对树和树视图进行操作的信息,应用语句对相应的树信息进行编辑,并将编辑结果传送给主控模块;
所述序列查找模块,接收来自编译和功能分发模块的序列查找信息,在预先选定的事件列中查找所有与预先给定序列或序列对匹配的事件列,并给出该匹配的事件列发生的开始时间,同时计算该匹配事件列的出现次数以及在整个事件列中所占的比例,或计算当第一个事件列发生的情况下,第二个序列发生的可能性,将所有的计算结果和每个序列发生的开始时间都传送给主控模块;
所述上钻/下钻模块,接收来自编译和功能分发模块的上钻或下钻信息,利用预先创建的分类树,将用户指定的待统计的字段与树结构中的节点相匹配,将匹配的统计结果传送给主控模块;
所述聚类模块,接收来自编译和功能分发模块的聚类信息,对数据库中的信息进行汇总,并应用快速聚类算法计算出一个或一个以上的聚类,同时单独列出不构成聚类的记录,将聚类结果和不构成聚类的记录传送给主控模块;
所述序列模式挖掘模块,接收来自编译和功能分发模块的序列模式挖掘信息,应用数据挖掘算法从数据库中挖掘出给定事件的所有序列模式或序列对模式,并将挖掘结果传送给主控模块。
3、根据权利要求1或2所述的***,其特征在于,该***进一步包括:分类树处理模块,该模块与主控模块直接相连,接收来自主控模块的对树和树视图进行操作的信息,应用图形化菜单对树信息进行编辑,并将编辑结果传送给主控模块。
4、根据权利要求3所述的***,其特征在于,所述树结构的类型为字符串型、离散数值型、连续数值型或时间日期型。
5、根据权利要求1所述的***,其特征在于,所述初始化模块开辟的常用数据空间至少包括存放用户输入语句序列的空间和存放树结构的空间。
6、一种对日志进行分析的方法,其特征在于,该方法包括以下步骤:
a、用户预先建立树结构的逻辑拓扑结构,并使树结构中的内容与数据库中的一个或一个以上字段相对应;
b、启动如权利要求1所述的日志分析***,建立该日志分析***与用户指定数据库的连接,并进行***初始化;
c、日志分析***采集到用户输入的语句信息后,自动对其进行解析,并判断解析结果是否与逻辑拓扑结构有关,如果是,则根据解析结果,对树结构进行处理,或按照树结构对数据库中的数据进行分析,将分析结果显示给用户;否则,根据解析结果,直接对数据库中的数据进行操作,并将操作结果显示给用户。
7、根据权利要求6所述的方法,其特征在于,步骤c所述日志分析***采集到用户输入的语句信息后,进一步包括:判断用户输入的语句信息是否有效,如果是,则继续执行后续步骤,否则提示用户输入信息有误后,结束。
8、根据权利要求6或7所述的方法,其特征在于,步骤c所述用户输入的语句信息为普通的SQL执行语句,则日志分析***判断其与逻辑拓扑结构无关后,将解析后的结果传送给SQL执行模块进行数据操作,并将操作结果显示给用户。
9、根据权利要求6或7所述的方法,其特征在于,步骤c所述用户输入的语句信息为序列查找语句,则日志分析***判断其与逻辑拓扑结构有关后,将解析后的结果传送给序列查找模块,由序列查找模块按照树结构对数据库中的数据进行查找,将查找结果显示给用户。
10、根据权利要求9所述的方法,其特征在于,所述序列查找模块的处理步骤为:
将数据库中某个域的值定位在树中的相应节点上,并根据用户输入的时间列和时间间隔,对给定的事件序列和事件序列对进行匹配查找,将匹配的事件序列和事件序列对以及其起始时间显示给用户。
11、根据权利要求6或7所述的方法,其特征在于,步骤c所述用户输入的语句信息为上钻/下钻语句,则日志分析***判断其与逻辑拓扑结构有关后,将解析后的结果传送给上钻/下钻模块,由上钻/下钻模块按照树结构进行上钻/下钻处理后,将处理结果显示给用户。
12、根据权利要求11所述的方法,其特征在于,所述上钻/下钻模块的处理步骤为:
将待执行上钻或下钻操作的树结构解析为标准形式,并根据用户输入的语句,确定数据库中的待查找字段,并将待查找字段与树结构的节点进行匹配,将匹配结果统计后显示给用户。
13、根据权利要求6或7所述的方法,其特征在于,步骤c所述用户输入的语句信息为聚类语句,则日志分析***判断其与逻辑拓扑结构有关后,将解析后的结果传送给聚类模块,由聚类模块按照树结构进行聚类处理后,将聚类结果显示给用户。
14、根据权利要求13所述的方法,其特征在于,所述聚类模块的处理步骤为:
将数据库中某个域的值定位在树中的相应节点上,并根据用户输入的语句,确定的主题列和待分析的列,从数据库中查找到主题列和待分析的列的原始归类信息后,应用聚类算法对原始的归类信息进行聚类计算,将聚类结果以及未能聚类的记录显示给用户。
15、根据权利要求6或7所述的方法,其特征在于,步骤c所述用户输入的语句信息为序列模式挖掘语句,则日志分析***判断其与逻辑拓扑结构有关后,将解析后的结果传送给序列模式挖掘模块,由序列模式挖掘模块按照树结构对数据库中的数据进行挖掘处理,将挖掘结果显示给用户。
16、根据权利要求15所述的方法,其特征在于,所述序列查找模块的处理步骤为:
将数据库中某个域的值定位在树中的相应节点上,并根据用户输入的时间列和时间间隔,对给定的事件序列和事件序列对,应用数据挖掘算法从数据库中挖掘出给定事件的所有序列模式或序列对模式,将挖掘结果显示给用户。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 03143391 CN1277192C (zh) | 2003-09-30 | 2003-09-30 | 一种日志分析***及基于该***的分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 03143391 CN1277192C (zh) | 2003-09-30 | 2003-09-30 | 一种日志分析***及基于该***的分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1604035A true CN1604035A (zh) | 2005-04-06 |
CN1277192C CN1277192C (zh) | 2006-09-27 |
Family
ID=34659405
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 03143391 Expired - Fee Related CN1277192C (zh) | 2003-09-30 | 2003-09-30 | 一种日志分析***及基于该***的分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1277192C (zh) |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100412807C (zh) * | 2005-12-22 | 2008-08-20 | 国际商业机器公司 | 在数字数据处理***中管理进程的事件日志的方法和*** |
CN101163265B (zh) * | 2007-11-20 | 2010-08-18 | 中兴通讯股份有限公司 | 基于分布式数据库的彩信日志查询方法与*** |
CN101316185B (zh) * | 2007-06-01 | 2011-05-18 | 阿里巴巴集团控股有限公司 | 一种基于日志文件的分析结果定位***资源瓶颈的方法 |
CN101192227B (zh) * | 2006-11-30 | 2011-05-25 | 阿里巴巴集团控股有限公司 | 一种基于分布式计算网络的日志文件分析方法和*** |
CN102117321A (zh) * | 2010-01-06 | 2011-07-06 | 微软公司 | 主题区讨论的自动发现聚集和组织 |
CN102147811A (zh) * | 2011-03-22 | 2011-08-10 | 杭州华三通信技术有限公司 | 一种基于日志的***性能分析方法和装置 |
CN101661424B (zh) * | 2009-09-01 | 2011-09-14 | 卡斯柯信号有限公司 | 一种自适应日志文件高效输出处理方法 |
CN101741633B (zh) * | 2008-11-06 | 2011-12-28 | 北京启明星辰信息技术股份有限公司 | 一种海量日志关联分析方法及*** |
CN102395042A (zh) * | 2011-10-14 | 2012-03-28 | 深圳市同洲电子股份有限公司 | 对数字电视***进行调试的方法及*** |
CN102750357A (zh) * | 2012-06-12 | 2012-10-24 | 苏州微逸浪科技有限公司 | 一种基于异构数据库的事件数据处理方法 |
CN103294707A (zh) * | 2012-02-28 | 2013-09-11 | 腾讯科技(深圳)有限公司 | 一种日志的实现方法及装置 |
US8639697B2 (en) | 2010-01-11 | 2014-01-28 | International Business Machines Corporation | Computer system performance analysis |
CN104462606A (zh) * | 2014-12-31 | 2015-03-25 | 中国科学院深圳先进技术研究院 | 一种基于日志数据确定诊断处理措施的方法 |
CN104735786A (zh) * | 2013-12-18 | 2015-06-24 | 中兴通讯股份有限公司 | 一种资源调度的方法和装置 |
CN105871922A (zh) * | 2016-06-13 | 2016-08-17 | 青岛海信传媒网络技术有限公司 | 电视故障定位方法、业务服务器及电视 |
CN106021203A (zh) * | 2016-05-26 | 2016-10-12 | 中国电力科学研究院 | 一种智能变电站防误闭锁逻辑图形化表达方法 |
CN106201837A (zh) * | 2016-07-19 | 2016-12-07 | 电信科学技术第五研究所 | 一种集成化硬件平台的日志解析方法和*** |
CN107423411A (zh) * | 2017-07-28 | 2017-12-01 | 郑州云海信息技术有限公司 | 日志显示方法和装置 |
CN108241658A (zh) * | 2016-12-24 | 2018-07-03 | 北京亿阳信通科技有限公司 | 一种日志模式发现方法及*** |
CN109617737A (zh) * | 2018-12-27 | 2019-04-12 | 携程计算机技术(上海)有限公司 | 互联网的日志平台的监控方法及*** |
CN109844781A (zh) * | 2016-10-24 | 2019-06-04 | 甲骨文国际公司 | 用于从日志文件识别处理流并使流可视化的***和方法 |
CN111258792A (zh) * | 2018-11-30 | 2020-06-09 | 南京大学 | 一种基于目标模型的日志记录和错误分析工具 |
CN111400500A (zh) * | 2020-03-25 | 2020-07-10 | 上海擎创信息技术有限公司 | 一种基于LCS的Chameleon实时日志聚类方法 |
CN112256549A (zh) * | 2020-11-13 | 2021-01-22 | 珠海大横琴科技发展有限公司 | 一种日志处理方法和装置 |
WO2021082831A1 (zh) * | 2019-10-29 | 2021-05-06 | 平安科技(深圳)有限公司 | 日志存储方法、装置、服务器及计算机可读存储介质 |
CN117389980A (zh) * | 2023-12-08 | 2024-01-12 | 成都康特电子科技股份有限公司 | 日志文件分析方法及装置、计算机设备和可读存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11645463B2 (en) * | 2020-06-07 | 2023-05-09 | Nanya Technology Corporation | Natural language processing system, natural language processing method and non-transitory computer readable medium |
-
2003
- 2003-09-30 CN CN 03143391 patent/CN1277192C/zh not_active Expired - Fee Related
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100412807C (zh) * | 2005-12-22 | 2008-08-20 | 国际商业机器公司 | 在数字数据处理***中管理进程的事件日志的方法和*** |
CN101192227B (zh) * | 2006-11-30 | 2011-05-25 | 阿里巴巴集团控股有限公司 | 一种基于分布式计算网络的日志文件分析方法和*** |
CN101316185B (zh) * | 2007-06-01 | 2011-05-18 | 阿里巴巴集团控股有限公司 | 一种基于日志文件的分析结果定位***资源瓶颈的方法 |
CN101163265B (zh) * | 2007-11-20 | 2010-08-18 | 中兴通讯股份有限公司 | 基于分布式数据库的彩信日志查询方法与*** |
CN101741633B (zh) * | 2008-11-06 | 2011-12-28 | 北京启明星辰信息技术股份有限公司 | 一种海量日志关联分析方法及*** |
CN101661424B (zh) * | 2009-09-01 | 2011-09-14 | 卡斯柯信号有限公司 | 一种自适应日志文件高效输出处理方法 |
CN102117321A (zh) * | 2010-01-06 | 2011-07-06 | 微软公司 | 主题区讨论的自动发现聚集和组织 |
CN102117321B (zh) * | 2010-01-06 | 2016-03-16 | 微软技术许可有限责任公司 | 主题区讨论的自动发现聚集和组织 |
US8639697B2 (en) | 2010-01-11 | 2014-01-28 | International Business Machines Corporation | Computer system performance analysis |
CN102231130B (zh) * | 2010-01-11 | 2015-06-17 | 国际商业机器公司 | 计算机***性能分析方法和装置 |
CN102147811A (zh) * | 2011-03-22 | 2011-08-10 | 杭州华三通信技术有限公司 | 一种基于日志的***性能分析方法和装置 |
CN102147811B (zh) * | 2011-03-22 | 2014-04-16 | 杭州华三通信技术有限公司 | 一种基于日志的***性能分析方法和装置 |
CN102395042B (zh) * | 2011-10-14 | 2014-11-26 | 深圳市同洲电子股份有限公司 | 对数字电视***进行调试的方法及*** |
CN102395042A (zh) * | 2011-10-14 | 2012-03-28 | 深圳市同洲电子股份有限公司 | 对数字电视***进行调试的方法及*** |
CN103294707A (zh) * | 2012-02-28 | 2013-09-11 | 腾讯科技(深圳)有限公司 | 一种日志的实现方法及装置 |
CN102750357A (zh) * | 2012-06-12 | 2012-10-24 | 苏州微逸浪科技有限公司 | 一种基于异构数据库的事件数据处理方法 |
CN104735786A (zh) * | 2013-12-18 | 2015-06-24 | 中兴通讯股份有限公司 | 一种资源调度的方法和装置 |
CN104735786B (zh) * | 2013-12-18 | 2019-12-03 | 中兴通讯股份有限公司 | 一种资源调度的方法和装置 |
CN104462606A (zh) * | 2014-12-31 | 2015-03-25 | 中国科学院深圳先进技术研究院 | 一种基于日志数据确定诊断处理措施的方法 |
CN104462606B (zh) * | 2014-12-31 | 2018-06-22 | 中国科学院深圳先进技术研究院 | 一种基于日志数据确定诊断处理措施的方法 |
CN106021203A (zh) * | 2016-05-26 | 2016-10-12 | 中国电力科学研究院 | 一种智能变电站防误闭锁逻辑图形化表达方法 |
CN105871922A (zh) * | 2016-06-13 | 2016-08-17 | 青岛海信传媒网络技术有限公司 | 电视故障定位方法、业务服务器及电视 |
CN106201837A (zh) * | 2016-07-19 | 2016-12-07 | 电信科学技术第五研究所 | 一种集成化硬件平台的日志解析方法和*** |
CN109844781B (zh) * | 2016-10-24 | 2024-03-22 | 甲骨文国际公司 | 用于从日志文件识别处理流并使流可视化的***和方法 |
US12014283B2 (en) | 2016-10-24 | 2024-06-18 | Oracle International Corporation | Systems and methods for identifying process flows from log files and visualizing the flow |
US11983639B2 (en) | 2016-10-24 | 2024-05-14 | Oracle International Corporation | Systems and methods for identifying process flows from log files and visualizing the flow |
CN109844781A (zh) * | 2016-10-24 | 2019-06-04 | 甲骨文国际公司 | 用于从日志文件识别处理流并使流可视化的***和方法 |
CN108241658B (zh) * | 2016-12-24 | 2021-09-07 | 北京亿阳信通科技有限公司 | 一种日志模式发现方法及*** |
CN108241658A (zh) * | 2016-12-24 | 2018-07-03 | 北京亿阳信通科技有限公司 | 一种日志模式发现方法及*** |
CN107423411A (zh) * | 2017-07-28 | 2017-12-01 | 郑州云海信息技术有限公司 | 日志显示方法和装置 |
CN111258792A (zh) * | 2018-11-30 | 2020-06-09 | 南京大学 | 一种基于目标模型的日志记录和错误分析工具 |
CN109617737A (zh) * | 2018-12-27 | 2019-04-12 | 携程计算机技术(上海)有限公司 | 互联网的日志平台的监控方法及*** |
WO2021082831A1 (zh) * | 2019-10-29 | 2021-05-06 | 平安科技(深圳)有限公司 | 日志存储方法、装置、服务器及计算机可读存储介质 |
CN111400500A (zh) * | 2020-03-25 | 2020-07-10 | 上海擎创信息技术有限公司 | 一种基于LCS的Chameleon实时日志聚类方法 |
CN112256549A (zh) * | 2020-11-13 | 2021-01-22 | 珠海大横琴科技发展有限公司 | 一种日志处理方法和装置 |
CN117389980A (zh) * | 2023-12-08 | 2024-01-12 | 成都康特电子科技股份有限公司 | 日志文件分析方法及装置、计算机设备和可读存储介质 |
CN117389980B (zh) * | 2023-12-08 | 2024-02-09 | 成都康特电子科技股份有限公司 | 日志文件分析方法及装置、计算机设备和可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN1277192C (zh) | 2006-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1277192C (zh) | 一种日志分析***及基于该***的分析方法 | |
CN109445834B (zh) | 基于抽象语法树的程序代码相似性快速比较方法 | |
US6339776B2 (en) | Dynamic semi-structured repository for mining software and software-related information | |
Laender et al. | A brief survey of web data extraction tools | |
US6768987B1 (en) | System and method for filtering explain tables | |
Corley et al. | Exploring the use of deep learning for feature location | |
CN110532019B (zh) | 一种软件代码片段历史追溯的方法 | |
CN1726488A (zh) | 用于构建自然语言理解应用的集成开发工具 | |
CN104281702B (zh) | 基于电力关键词分词的数据检索方法及装置 | |
Allan et al. | Taking topic detection from evaluation to practice | |
CN1509433A (zh) | 把传统软件应用程序转换为现代面向对象***的方法和*** | |
JP2006244478A (ja) | 構成可能なクエリを形成するapiおよびクエリ言語 | |
CN109726274A (zh) | 问题生成方法、装置及存储介质 | |
CN1670708A (zh) | 一种计算机日志的管理方法 | |
CN1725213A (zh) | 构造、维护个性化分类树、分类显示文档的方法及*** | |
CN115562679B (zh) | 一种基于Java语言的自动生成代码的方法及服务器 | |
CN106341257A (zh) | 一种自定义日志解析规则并自动解析日志的方法和工具 | |
KR100575581B1 (ko) | 우선순위 그래프를 이용한 제품 계열의 기능 분석 및테스팅 경로 분석 장치 및 그 방법 | |
CN109977370B (zh) | 一种基于文档结构树的问答对自动构建方法 | |
CN109446277A (zh) | 基于中文自然语言的关系型数据智能搜索方法及*** | |
WO2002044992A3 (en) | System for modeling biological pathways | |
CN110825792B (zh) | 基于golang中间件协程模式下的高并发分布式数据检索方法 | |
CN110309214A (zh) | 一种指令执行方法及其设备、存储介质、服务器 | |
CN111291373B (zh) | 用于分析数据污染传播的方法、设备和计算机可读存储介质 | |
CN109522356B (zh) | 一种核反应堆数字实验*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060927 Termination date: 20091030 |