CN113806199A - 一种基于事件的云日志切割方法 - Google Patents

一种基于事件的云日志切割方法 Download PDF

Info

Publication number
CN113806199A
CN113806199A CN202111146695.0A CN202111146695A CN113806199A CN 113806199 A CN113806199 A CN 113806199A CN 202111146695 A CN202111146695 A CN 202111146695A CN 113806199 A CN113806199 A CN 113806199A
Authority
CN
China
Prior art keywords
log
program
point
node
event
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
Application number
CN202111146695.0A
Other languages
English (en)
Other versions
CN113806199B (zh
Inventor
李腾
陈振哲
彭超源
张胜凯
王申奥
董津玮
马卓
沈玉龙
马建峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CN202111146695.0A priority Critical patent/CN113806199B/zh
Publication of CN113806199A publication Critical patent/CN113806199A/zh
Application granted granted Critical
Publication of CN113806199B publication Critical patent/CN113806199B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于事件的云日志切割方法,本发明通过源代码设置探针,获取程序执行路径,将执行路径与日志结合,抽象出程序执行的事件链。与日志原始文本信息分析方法相比,它额外提供了日志对应的程序执行状态;与源代码分析方法相比,可以追踪程序在事件中的运行状态,准确率高。本发明通过引入动态收集运行时信息的可能性,该方法避免了代码重新编译的繁琐过程,同时能够准确记录程序的每一个执行路径。针对日志消息在程序中不同的传递路径,本发明通过跟踪日志框架对接函数或虚拟文件系统VFS活动,记录日志信息所对应的程序执行路径,从而解决了仅通过时间戳匹配不精确的问题。

Description

一种基于事件的云日志切割方法
技术领域
本发明属于软件工程领域,具体涉及一种基于事件的云日志切割方法。
背景技术
如今的云服务都在大规模服务器集群中运行。然而,当一个在数以千计的计算机上运行的由数百个软件组件组成的数据中心规模的服务出现异常时,开发人员或运营商需要使用所有可用的工具来进行故障排除和诊断。几乎每个软件都内置了一个日志源。日志(Log)是系统在运行过程中变化的一种抽象,其内容为指定对象的某些操作和其操作结果按时间的有序集合,它提供了详细的信息,反映了原始开发人员对需要注意的以及不寻常的事件的想法。通过这些痕迹可以准确地还原程序的运行状态,并在系统出现故障和失效的情况下进行分析,以确定问题的原因和位置。
随着系统规模的扩大,操作员必须处理的信息量远远超过了可以人工处理的水平。因此,对监测数据的自动处理有巨大的需求。事件为用户在程序上执行的原子操作,如果将原始日志信息分组成与事件相对应的日志序列,即原子操作对应的日志,具有高相关性的关联。一旦确定了关键的日志信息,就可以限定与该崩溃事件相对应的日志上下文的范围,这样系统管理员在分析日志时就能专注于特定事件,比作为低级信息的单条日志消息更能指示系统的问题。现有的方法可分为“源代码分析技术”与“过程挖掘技术”两种,受到依赖于日志本身与只分析源代码两个限制,容易受噪声影响以及难获得事件的特征。
鉴于许多生产系统中的开源软件无处不在,作为系统维护者或软件开发者,他们可以接触到源代码。在物理层面上,日志是基于预先定义的源代码,是对程序运行状态的实时表述。以源代码作为路线图,可以补充基于日志信息的系统审计。如果通过源代码追踪日志信息,对其进行分割,并提取到事件,这将获得比纯粹的日志数据分析更高的准确性,并克服上述方法的弱点。
发明内容
本发明的目的在于克服现有技术中容易受到噪声的影响、难以获得事件的特征、需要大量的计算资源的问题,提供一种基于事件的云日志切割方法,能够获取程序执行状态,自动处理生成的日志并按照事件分割,限定与指定事件相对应的日志上下文的范围,在日志分析工作中是重要的。
为了达到上述目的,本发明包括以下步骤:
S1,判断目标程序是否采用日志框架传输,若是,则执行S2,若否则执行S3;
S2,在记录日志的源代码文件中定位与日志框架互动的目标函数,执行S4;
S3,通过虚拟文件系统VFS定位与日志框架互动的日志文件,执行S4;
S4,在每个函数或日志文件上设置探针,收集目标函数或日志文件被调用时的进程调用堆栈,执行S5;
S5,将被调用时的进程调用堆栈转化为树结构,并将日志文件对应的节点高亮,执行S6;
S6,计算相邻高亮节点的最大公共祖先数,执行S7;
S7,以最大公共祖先数的75%平均值为标准将日志划分,高于75%平均值的相邻节点将被划分为同一事件,反之则为不同事件。
S2中,指定一个探测点,并将一个定义的处理函数与该探测点相关联,当内核执行到该探测点时,相应的关联函数被执行,然后继续正常的代码路径。
S3中,当一个文件要被读取或写入时,目标程序在用户模式下执行写/读功能,将数据传递给虚拟文件系统VFS,然后进入内核模式,虚拟文件系统VFS将数据传递给文件系统并写入磁盘,由于日志信息是通过链式函数调用传递给虚拟文件系统VFS的,通过监控虚拟文件系统VFS的写函数获得程序执行写时对应的程序栈,根据程序栈定位目标程序中的日志文件。
S4中,在目标程序的每个函数上放置一个探针,当程序执行一个函数调用时,探针将被触发,记录程序运行期间堆栈变化时的每一个堆栈;
在目标程序中接受所有日志输入的函数上设置探针,当目标程序向相应的日志文件写日志信息时,拦截日志信息,并在传递给日志框架之前记录日志信息和相应的程序栈。
S5的具体方法如下:
对当前的轨迹和之前的轨迹进行差异分析,定位两者相同部分的节点;
将差异的部分作为节点的儿子插入树中;
生成执行树后,使用日志和路径二元组定位目标节点N,并将其高亮;
在高亮节点上附上相应的日志信息。
S6的具体方法如下:
定义DFN[u]为节点u在深度优先搜索时被搜索的次序,定义LOW[i]为i或i的子树能够追溯到的最早的栈中节点的次序号,当DFN[i]==LOW[i]时,i或i的子树可以构成强连通分量;
以树根为起始点开始深度优先搜索,遍历该点u的所有子节点v,并将这些节点v标记为已访问过;
将点v在并查集上合并至点u,表达式如下:
ancestor[find(u)]=find(v)
遍历高亮节点集{N1,N2,…,Nn},以{Ni,Ni+1}为查询对,寻找与点u有询问关系的点v;
如果点v已经被访问,确定点u和点v的最近公共祖先为v在并查集集合中的根节点,表达式如下:
ifNi+1==u and marked[Ni]==True:
LCA(Ni,Ni+1)=LCA(Ni+1,Ni)=ancestor[x]
该最近公共祖先节点的深度即为点u和点v间的最大公共祖先数。
S7的具体方法如下:
查询树中各相邻高亮节点间的最大共同祖先数,并计算75%平均值,计算表达式如下:
Figure BDA0003285674980000041
将N1置入当前事件,遍历高亮节点集,当当前节点与下一节点的最大公共祖先数大于75%平均值时,划分新事件;
如当前节点与下一节点的最大公共祖先数小于75%平均值则不划分新事件,计算表达式如下:
Figure BDA0003285674980000042
将当前点移至下一节点,将N1置入当前事件,遍历高亮节点集,直至节点遍历完成。
与现有技术相比,本发明通过源代码设置探针,获取程序执行路径,将执行路径与日志结合,抽象出程序执行的事件链。与日志原始文本信息分析方法相比,它额外提供了日志对应的程序执行状态;与源代码分析方法相比,可以追踪程序在事件中的运行状态,准确率高。本发明通过引入动态收集运行时信息的可能性,该方法避免了代码重新编译的繁琐过程,同时能够准确记录程序的每一个执行路径。针对日志消息在程序中不同的传递路径,本发明通过跟踪日志框架对接函数或虚拟文件系统VFS活动,记录日志信息所对应的程序执行路径,从而解决了仅通过时间戳匹配不精确的问题。本发明的算法将原始的日志消息映射到程序执行树上,根据标记的程序状态记录点之间的关系来划分日志消息,抽象为高级别的可理解的事件。
附图说明
图1为本发明方法的整体流程图;
图2为Kprobe的运行流程图;
图3为分析登陆行为的准确率示意图;
图4为时间复杂度与空间占用示意图。
具体实施方式
下面结合附图对本发明做进一步说明。
本发明主要由三个阶段构成:日志源定位、数据流追踪与事件链整合。
参见图1,本发明一种基于事件的云日志切割方法,包括以下步骤:
步骤1,日志源定位;
(1a)确定要监控的目标程序。系统日志、网络(HTTP、DNS、UDP/TCP)日志可以通过系统审计工具和数据包捕获工具收集。这些日志通常有时间戳、进程名称和执行路径等信息;
(1b)对于直接向文件写入日志的程序,通常是通过虚拟文件系统VFS写入数据,虚拟文件系统VFS为应用程序访问文件提供了统一的接口。当一个文件要被读取或写入时,程序在用户模式下执行写/读功能,将数据传递给虚拟文件系统VFS,然后进入内核模式。虚拟文件系统VFS执行sys_write/sys_read功能,将数据传递给文件系统并写入磁盘。由于日志信息是通过链式函数调用传递给虚拟文件系统VFS的,通过监控虚拟文件系统VFS的写函数,可以直接获得程序执行写时对应的程序栈;
(1c)对于日志信息通过日志框架传递的情况,作为系统管理员,拥有这个系统的源代码,并且默认对程序结构有一定的了解。通常情况下,对于一个程序,源代码包将包含一个与日志框架交互的源代码文件。定位该段代码即可监控日志信息的传递。
(1d)根据预先定义的配置和格式,这段代码将接受该程序内的所有日志输入,通过调用公共库中的日志记录函数,如syslog(),将该程序中的日志信息传输到日志框架中。
步骤2,数据流追踪;
(2a)本发明利用Kprobe的特性,被设计成具有动态监控程序运行和执行特定自定义指令的能力。参见图2,Kprobe提供了一组方法,指定一个探测点,并将一个定义的处理函数与该探测点相关联;
(2b)当内核执行到该探测点时,相应的关联函数被执行,然后继续正常的代码路径。
(2c)在程序的每个函数上放置一个探针。当程序执行一个函数调用时,探针将被触发,记录程序运行期间堆栈变化时的每一个堆栈;
(2d)本发明在目标程序写入日志之前,在特定的函数上插入监控探针,当日志被写入时,得到当前程序堆栈中的日志内容;
(2e)对于直接将日志写入文件的程序,在VFS的写操作上设置一个探针,当VFS执行写操作时激活,通过inode号判断写入的目标文件是否是需要监控的文件,并打印程序栈与写入的信息;
(2f)对于通过日志框架传递日志信息的程序,将探针直接设置在该程序中接受所有日志输入的函数上。当程序向相应的日志文件写日志信息时,拦截日志信息,并在传递给日志框架之前记录日志信息和相应的程序栈。
步骤3,事件链整合;
算法1用于将追踪的函数调用轨迹同(日志,路径)二元组一并转换为带有高亮节点的树;算法2用于高亮节点间的最大公共祖先数;算法3用于将日志划分到各事件。
(3a)利用算法1,通过遍历序列来生成程序执行树,算法有三个步骤,具体如下:
(3a1)对当前的轨迹和之前的轨迹进行差异分析,定位两者相同部分的节点
(3a2)将差异的部分作为节点的儿子插入树中
(3a3)生成执行树后,使用(日志,路径)二元组定位目标节点N,并将其高亮
(3a4)在高亮节点上附上相应的日志信息。

Claims (7)

1.一种基于事件的云日志切割方法,其特征在于,包括以下步骤:
S1,判断目标程序是否采用日志框架传输,若是,则执行S2,若否则执行S3;
S2,在记录日志的源代码文件中定位与日志框架互动的目标函数,执行S4;
S3,通过虚拟文件系统VFS定位与日志框架互动的日志文件,执行S4;
S4,在每个函数或日志文件上设置探针,收集目标函数或日志文件被调用时的进程调用堆栈,执行S5;
S5,将被调用时的进程调用堆栈转化为树结构,并将日志文件对应的节点高亮,执行S6;
S6,计算相邻高亮节点的最大公共祖先数,执行S7;
S7,以最大公共祖先数的75%平均值为标准将日志划分,高于75%平均值的相邻节点将被划分为同一事件,反之则为不同事件。
2.根据权利要求1所述的一种基于事件的云日志切割方法,其特征在于,S2中,指定一个探测点,并将一个定义的处理函数与该探测点相关联,当内核执行到该探测点时,相应的关联函数被执行,然后继续正常的代码路径。
3.根据权利要求1所述的一种基于事件的云日志切割方法,其特征在于,S3中,当一个文件要被读取或写入时,目标程序在用户模式下执行写/读功能,将数据传递给虚拟文件系统VFS,然后进入内核模式,虚拟文件系统VFS将数据传递给文件系统并写入磁盘,由于日志信息是通过链式函数调用传递给虚拟文件系统VFS的,通过监控虚拟文件系统VFS的写函数获得程序执行写时对应的程序栈,根据程序栈定位目标程序中的日志文件。
4.根据权利要求1所述的一种基于事件的云日志切割方法,其特征在于,S4中,在目标程序的每个函数上放置一个探针,当程序执行一个函数调用时,探针将被触发,记录程序运行期间堆栈变化时的每一个堆栈;
在目标程序中接受所有日志输入的函数上设置探针,当目标程序向相应的日志文件写日志信息时,拦截日志信息,并在传递给日志框架之前记录日志信息和相应的程序栈。
5.根据权利要求1所述的一种基于事件的云日志切割方法,其特征在于,S5的具体方法如下:
对当前的轨迹和之前的轨迹进行差异分析,定位两者相同部分的节点;
将差异的部分作为节点的儿子插入树中;
生成执行树后,使用日志和路径二元组定位目标节点N,并将其高亮;
在高亮节点上附上相应的日志信息。
6.根据权利要求1所述的一种基于事件的云日志切割方法,其特征在于,S6的具体方法如下:
定义DFN[u]为节点u在深度优先搜索时被搜索的次序,定义LOW[i]为i或i的子树能够追溯到的最早的栈中节点的次序号,当DFN[i]==LOW[i]时,i或i的子树可以构成强连通分量;
以树根为起始点开始深度优先搜索,遍历该点u的所有子节点v,并将这些节点v标记为已访问过;
将点v在并查集上合并至点u,表达式如下:
ancestor[find(u)]=find(v)
遍历高亮节点集{N1,N2,…,Nn},以{Ni,Ni+1}为查询对,寻找与点u有询问关系的点v;
如果点v已经被访问,确定点u和点v的最近公共祖先为v在并查集集合中的根节点,表达式如下:
ifNi+1==u and marked[Ni]==True:
LCA(Ni,Ni+1)=LCA(Ni+1,Ni)=ancestor[x]
该最近公共祖先节点的深度即为点u和点v间的最大公共祖先数。
7.根据权利要求1所述的一种基于事件的云日志切割方法,其特征在于,S7的具体方法如下:
查询树中各相邻高亮节点间的最大共同祖先数,并计算75%平均值,计算表达式如下:
Figure FDA0003285674970000031
将N1置入当前事件,遍历高亮节点集,当当前节点与下一节点的最大公共祖先数大于75%平均值时,划分新事件;
如当前节点与下一节点的最大公共祖先数小于75%平均值则不划分新事件,计算表达式如下:
Figure FDA0003285674970000032
将当前点移至下一节点,将N1置入当前事件,遍历高亮节点集,直至节点遍历完成。
CN202111146695.0A 2021-09-28 2021-09-28 一种基于事件的云日志切割方法 Active CN113806199B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111146695.0A CN113806199B (zh) 2021-09-28 2021-09-28 一种基于事件的云日志切割方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111146695.0A CN113806199B (zh) 2021-09-28 2021-09-28 一种基于事件的云日志切割方法

Publications (2)

Publication Number Publication Date
CN113806199A true CN113806199A (zh) 2021-12-17
CN113806199B CN113806199B (zh) 2024-10-25

Family

ID=78897052

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111146695.0A Active CN113806199B (zh) 2021-09-28 2021-09-28 一种基于事件的云日志切割方法

Country Status (1)

Country Link
CN (1) CN113806199B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160042180A1 (en) * 2014-08-07 2016-02-11 Ut Battelle, Llc Behavior specification, finding main, and call graph visualizations
CN109660526A (zh) * 2018-12-05 2019-04-19 国网江西省电力有限公司信息通信分公司 一种应用于信息安全领域的大数据分析方法
CN110879771A (zh) * 2019-11-05 2020-03-13 北京航空航天大学 一种基于关键词序列挖掘的用户异常检测的日志分析系统
CN110968493A (zh) * 2019-12-24 2020-04-07 上海英方软件股份有限公司 一种基于运行日志分析推演程序运行状态的方法及系统
CN111258792A (zh) * 2018-11-30 2020-06-09 南京大学 一种基于目标模型的日志记录和错误分析工具
CN112925757A (zh) * 2021-03-26 2021-06-08 广东好太太智能家居有限公司 一种追踪智能设备操作日志的方法、设备、存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160042180A1 (en) * 2014-08-07 2016-02-11 Ut Battelle, Llc Behavior specification, finding main, and call graph visualizations
CN111258792A (zh) * 2018-11-30 2020-06-09 南京大学 一种基于目标模型的日志记录和错误分析工具
CN109660526A (zh) * 2018-12-05 2019-04-19 国网江西省电力有限公司信息通信分公司 一种应用于信息安全领域的大数据分析方法
CN110879771A (zh) * 2019-11-05 2020-03-13 北京航空航天大学 一种基于关键词序列挖掘的用户异常检测的日志分析系统
CN110968493A (zh) * 2019-12-24 2020-04-07 上海英方软件股份有限公司 一种基于运行日志分析推演程序运行状态的方法及系统
CN112925757A (zh) * 2021-03-26 2021-06-08 广东好太太智能家居有限公司 一种追踪智能设备操作日志的方法、设备、存储介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
YAN, ZHIQIANG: "Decomposed and parallel process discovery: A framework and application", FUTURE GENERATION COMPUTER SYSTEMS-THE INTERNATIONAL JOURNAL OF ESCIENCE VOLUME 98, 30 September 2019 (2019-09-30), pages 392 - 405 *
余建波;董晨阳;李传锋;程辉;孙习武;: "基于统计α算法的过程挖掘", 北京航空航天大学学报, no. 05, 26 October 2017 (2017-10-26), pages 4 - 15 *
常二慧: "基于日志分析的物联网平台异常检测方法及系统", 中国优秀硕士学位论文全文数据库, 16 January 2020 (2020-01-16), pages 1 - 77 *
陈晨;薛正;戴晓苗;王奕钧;: "政府网站综合防护系统攻击事件回溯关键技术研究", 警察技术, no. 02, 7 March 2017 (2017-03-07), pages 18 - 21 *

Also Published As

Publication number Publication date
CN113806199B (zh) 2024-10-25

Similar Documents

Publication Publication Date Title
CN106656536B (zh) 一种用于处理服务调用信息的方法与设备
US7559053B2 (en) Program and system performance data correlation
US7003781B1 (en) Method and apparatus for correlation of events in a distributed multi-system computing environment
Zou et al. Uilog: Improving log-based fault diagnosis by log analysis
US7979850B2 (en) Method and system for generating a common trace data format
CN112612675A (zh) 微服务架构下的分布式大数据日志链路跟踪方法及系统
US8037458B2 (en) Method and system for providing a common structure for trace data
US20080127108A1 (en) Common performance trace mechanism
US20130081001A1 (en) Immediate delay tracker tool
CN110489317B (zh) 基于工作流的云系统任务运行故障诊断方法与系统
US20060195731A1 (en) First failure data capture based on threshold violation
CN114968727B (zh) 基于人工智能运维的数据库贯穿基础设施的故障定位方法
CN116192621A (zh) 基于Opentracing链路追踪业务调用链的方法
US8875158B2 (en) Method for request profiling in service systems with kernel events
CN111970151A (zh) 虚拟及容器网络的流量故障定位方法及系统
CN113821554B (zh) 一种实现异构数据库数据采集的方法
CN111581057A (zh) 一种通用日志解析方法、终端设备及存储介质
CN113138906A (zh) 一种调用链数据采集方法、装置、设备及存储介质
Zhang et al. CLUE: System trace analytics for cloud service performance diagnosis
CN113806199B (zh) 一种基于事件的云日志切割方法
CN116860555A (zh) 软件运行监控方法、装置、设备以及计算机存储介质
CN115712552A (zh) 一种api和数据库的关联审计方法及系统
CN115757045A (zh) 一种交易日志分析方法、系统及装置
CN115455059A (zh) 一种基于底层数据解析用户行为的方法、装置及相关介质
US20130111450A1 (en) Runtime environment and method for non-invasive monitoring of software applications

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant