CN117170984B - 一种linux系统待机状态的异常检测方法及系统 - Google Patents
一种linux系统待机状态的异常检测方法及系统 Download PDFInfo
- Publication number
- CN117170984B CN117170984B CN202311446824.7A CN202311446824A CN117170984B CN 117170984 B CN117170984 B CN 117170984B CN 202311446824 A CN202311446824 A CN 202311446824A CN 117170984 B CN117170984 B CN 117170984B
- Authority
- CN
- China
- Prior art keywords
- standby switching
- log data
- log
- switching
- 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.)
- Active
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 65
- 230000002159 abnormal effect Effects 0.000 title claims abstract description 58
- 238000004458 analytical method Methods 0.000 claims abstract description 56
- 230000005856 abnormality Effects 0.000 claims abstract description 43
- 238000000034 method Methods 0.000 claims abstract description 43
- 239000000523 sample Substances 0.000 claims abstract description 17
- 238000012360 testing method Methods 0.000 claims abstract description 11
- 230000014509 gene expression Effects 0.000 claims description 81
- 230000011218 segmentation Effects 0.000 claims description 12
- 230000009191 jumping Effects 0.000 claims description 6
- 238000001914 filtration Methods 0.000 claims description 5
- 239000000284 extract Substances 0.000 claims description 4
- 230000006399 behavior Effects 0.000 description 8
- 230000007958 sleep Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 5
- 230000000903 blocking effect Effects 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000005206 flow analysis Methods 0.000 description 3
- 230000006266 hibernation Effects 0.000 description 3
- 238000012216 screening Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000005059 dormancy Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000007711 solidification Methods 0.000 description 1
- 230000008023 solidification Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种linux系统待机状态的异常检测方法及系统,方法包括:生成插入内核探针的内核模块,加载所述内核模块并进行待机切换测试,得到对应的日志;根据系统待机切换类型将所述日志分割成不同类型的单次系统待机切换日志数据;针对每个单次系统待机切换日志数据,首先分析探测系统待机切换的各个阶段,然后进行所有设备在系统待机切换时的各个阶段的行为分析,最后分析内核模块输出的信息,得到对应的分析结果;从每个单次系统待机切换日志数据和分析结果中抓取错误信息并推导异常信息。本发明能够显著提升linux系统待机切换的异常检测效率,也可广泛适用于各版本、各厂商的特定linux系统待机切换的异常检测。
Description
技术领域
本发明涉及操作系统电源管理技术,尤其涉及一种linux系统待机状态的异常检测方法及系统。
背景技术
linux系统在现有电源管理模式中,有着工作状态和节能状态,节能状态主要有睡眠suspend、休眠hibernate。为了满载节能和延迟待机时长的需要,在适当时候需要从工作状态切换到节能状态和从节能状态切换回工作状态。
在这种系统待机切换时,存在偶发的切换失败、甚至系统死机的故障情况。解决上述问题难度极大,这是由于故障发生的概率低,有的甚至上千次才复现到故障,需要分析的数据量极大;而且由于系统待机切换涉及到整个系统各个部分,可能产生的原因十分多也十分复杂,很难快速定位,尤其是对于不了解内核的用户处理起来可能无从下手;再者在某些疑难情况下,尤其是死机的故障,大多只能依靠分析内核输出的日志,这些日志提供的信息量小,无法准确判断故障原因。因此如何快速、有效的解决上述问题是一件十分重要的事情。
当前针对linux系统分析待机状态切换的工具很少,社区内核中有分析待机状态切换的一些python脚本,更多的是针对优化待机状态切换时间的目的。对于异常检测也仅仅定义了很简单的一些关键字来抓取少量、简单的错误,无法应用于更为复杂的情形。此外应用范围和场景也有许多局限。例如:1、仅支持休眠类型的待机状态切换;2、仅支持本机或dmesg类型日志;3、脚本固化,在X86平台支持的不错,但是对于国产多个CPU架构平台,支持的不够完善。
很显然现有技术无法满足linux系统待机切换异常检测的需求。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种linux系统待机状态的异常检测方法及系统,能够显著提升linux系统待机切换异常的检测效率。
为解决上述技术问题,本发明提出的技术方案为:
一种linux系统待机状态的异常检测方法,包括:
生成插入内核探针的内核模块,加载所述内核模块并进行待机切换测试,得到对应的日志;
根据系统待机切换类型将所述日志分割成不同类型的单次系统待机切换日志数据;
针对每个单次系统待机切换日志数据,首先分析探测系统待机切换的各个阶段,然后进行所有设备在系统待机切换时的各个阶段的行为分析,最后分析内核模块输出的信息,得到对应的分析结果;
从每个单次系统待机切换日志数据和分析结果中抓取错误信息并推导异常信息。
进一步的,根据系统待机切换类型将所述日志分割成不同类型的单次系统待机切换日志数据时,包括:将所述日志的每一行匹配预设的日志分割规则表中切换开始信息的正则表达式组以及切换结束信息的正则表达式组,将每个切换开始信息的正则表达式匹配结果与对应切换结束信息的正则表达式匹配结果之间的数据作为对应的单次系统待机切换日志数据。
进一步的,将所述日志的每一行匹配预设的日志分割规则表中切换开始信息的正则表达式组以及切换结束信息的正则表达式组时,包括:
遍历切换开始信息的正则表达式组与第L行日志数据进行正则匹配,如果存在匹配结果则在对应的单次系统待机切换日志数据中加入第L行日志数据,将匹配结果对应的系统待机切换类型作为所述单次系统待机切换日志数据的系统待机切换类型,并设置待机切换卡死标志位为真, L自加1并跳转执行遍历切换结束信息的正则表达式组与第L行日志数据进行正则匹配的步骤;如果不存在匹配结果则L自加1,重复遍历切换开始信息的正则表达式组与第L行日志数据进行正则匹配的步骤,直到L超出日志文件范围,结束并退出;
遍历切换结束信息的正则表达式组与第L行日志数据进行正则匹配,如果不存在匹配结果则在所述单次系统待机切换日志数据中加入第L行日志数据,L自加1并执行遍历切换结束信息的正则表达式组与第L行日志数据进行正则匹配的步骤,直到L超出日志文件范围,结束并退出;如果存在匹配结果则判断匹配结果的系统待机切换类型与所述单次系统待机切换日志数据的系统待机切换类型是否一致,如一致则设置待机切换卡死标志位为假,否则保持待机切换卡死标志位不变,在所述单次系统待机切换日志数据中加入第L行日志数据,跳转执行遍历切换开始信息的正则表达式组与第L行日志数据进行正则匹配的步骤,直到L超出日志文件范围,结束并退出。
进一步的,分析探测系统待机切换的各个阶段时,包括:
获取预处理后的单次系统待机切换日志数据,并根据所述单次系统待机切换日志数据的系统待机切换类型,从预设的阶段锚点库中选取对应的阶段锚点抓取规则表,初始化锚点探测列表;
遍历单次系统待机切换日志数据来匹配对应的阶段锚点抓取规则表中锚点的关键字,匹配到对应锚点关键字后,将对应的时间、日志行号信息、锚点对应的阶段名作为表项添加到锚点探测列表;
通过锚点探测列表前后表项间的时间差值计算对应的阶段时间。
进一步的,进行所有设备在系统待机切换时的各个阶段的行为分析时,包括:
检测预处理后的单次系统待机切换日志数据中每个设备initcall函数的调用和返回;
根据每个设备对initcall函数的调用和返回确定调用时间、结束时间、返回值及时长。
进一步的,分析内核模块输出的信息时,包括:
提取预设的动态跟踪点表中每个表项的信息属性并转换成正则表达式,每个表项均包括一一对应的内核探针点、信息属性和有效域;
遍历预处理后的单次系统待机切换日志数据,根据所述正则表达式进行正则匹配,得到匹配结果。
根据动态跟踪点表中对应的有效域,将所述匹配结果进行数据过滤,得到探测点的有效数据。
进一步的,从每个单次系统待机切换日志数据的分析结果中抓取错误信息并推导异常信息时,包括:
若单次系统待机切换日志数据的待机切换卡死标志位为真,则记录对应的错误信息;
若单次系统待机切换日志数据的锚点探测列表中表项缺失,或者前后表项间的时间差值大于预设阈值,则记录对应的错误信息;
若单次系统待机切换日志数据中提取每个设备initcall返回错误或没有返回,则记录对应的错误信息;
遍历预处理后的单次系统待机切换日志数据,和预设的异常匹配库中的正则表达式进行匹配,根据匹配结果和逻辑规则确定是否存在异常。
进一步的,根据匹配结果和逻辑规则确定是否存在异常时,包括:
若进行抓取判定,如果逻辑规则为“与”,则目标数据匹配所有正则表达式时判定为异常数据;
若进行抓取判定,如果逻辑规则为“或”,则目标数据匹配到任一正则表达式时判定为异常数据;
若进行抓取判定,如果逻辑规则为集合,则目标数据匹配到对应集合的正则表达式时判定为异常数据;
若进行非抓取判定,如果对于某个异常目标数据匹配到对应正则表达式则不判定为异常数据。
进一步的,记录对应的错误信息时,包括:记录发生错误时单次系统待机切换日志数据的对应行号;从每个单次系统待机切换日志数据的分析结果中抓取错误信息并推导异常信息时,还包括:在所述单次系统待机切换日志数据的锚点探测列表中找到最后一个小于所述行号的锚点,将该锚点所记录的阶段作为错误发生时的阶段。
本发明还提出一种linux系统待机状态的异常检测系统,包括互相连接的微处理器和存储介质,所述微处理器被编程或配置以执行任一所述的linux系统待机状态的异常检测方法。
与现有技术相比,本发明的优点在于:
本发明针对系统待机切换过程的日志分析,不但能够检测错误信息这类内核主动报错的异常,还能够检测从日志中推导的异常,通过从大量的日志文件中检测到异常,无需通过人工筛查和分析日志文件,大大提升了异常的检测效率。同时本发明通过在内核模块设置内核探针点,有效的解决了待机切换过程中的内核观测性的不足的问题,有利于得到更多的信息,加快异常的呈现和分析。
附图说明
图1为本发明实施例的流程图。
图2为本发明实施例中进行日志分析的流程图。
图3为本发明实施例的日志分割流程图的第一部分。
图4为本发明实施例的日志分割流程图的第二部分。
图5为本发明实施例的日志分割流程图的第三部分。
图6为本发明实施例中分析探测系统待机切换的各个阶段的流程图。
图7为本发明实施例中抓取错误信息并推导异常信息的流程图。
图8为图7中异常匹配库分析错误步骤的详细流程图。
图9为图8中错误的抓取和判定步骤的详细流程图。
图10为本发明实施例中确定错误发生时的阶段的流程图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
实施例一
为了提高linux系统待机状态的异常检测效率,如图1和图2所示,本实施提出一种linux系统待机状态的异常检测方法,包括:
首先,生成插入内核探针的内核模块,加载所述内核模块并进行待机切换测试,得到对应的日志,包括:
步骤S1:配置检测工具:建立日志分割规则表、异常匹配库、阶段锚点库、动态跟踪点表;
步骤S2:根据动态跟踪点表,利用内核探针调试技术生成用于检测的内核模块;
步骤S3:将所生成的内核模块加载到测试机内核中;测试机进行待机切换测试;得到测试机串口输出日志或kern.log日志;
然后,对日志进行分析,得到其中的错误信息和异常信息,包括:
步骤S4:将S3得到的日志数据输入到步骤S1配置的检测工具,检测工具进行日志分析,包含:日志预处理与分割、错误与故障分析、流程分析、设备分析、动态跟踪点分析,具体如图2中虚线部分所示,包括:
基于日志分割规则表,根据系统待机切换类型将所述日志分割成不同类型的单次系统待机切换日志数据;
针对每个单次系统待机切换日志数据,首先基于阶段锚点库分析探测系统待机切换的各个阶段,然后进行所有设备在系统待机切换时的各个阶段的行为分析,最后基于动态跟踪点表分析内核模块输出的信息,得到对应的分析结果;
基于异常匹配库,从每个单次系统待机切换日志数据和分析结果中抓取错误信息并推导异常信息;
最后,对错误信息和异常信息进行输出,包括:
步骤S5:对分析处理后的错误信息和异常信息进行存储、展示、报表;
步骤S6:结束分析,或用户根据S5的结果修改、新增配置项,重复S1-S5。
以某次睡眠(suspend)与休眠(hibernate)交替进行的场景为例,在未预先有异常的情况下,用户进行初次测试。此时步骤S1的配置检测工具加载通用的配置表且动态跟踪点表为空,因此步骤S2的内核模块为包含内核探针;然后用户通过步骤S3进行测试待机状态切换1000次,并得到对应日志;紧接着用户进行步骤S4,将日志输入到检测工具中,进行分析,并得到步骤S5的分析结果展现;最后用户根据分析结果展现发现1000次睡眠(suspend)中有一次切换失败异常,分析结果显示:错误与故障分析报设备resume失败,设备分析进一步显示哪个设备在resume阶段失败,并显示错误码;休眠(hibernate)中有一次系统卡死异常,分析结果显示:日志预处理与分割显示日志卡死的位置,设备分析中进一步显示哪些设备在哪些阶段卡死了。
用户根据上述分析结果,分析出睡眠(suspend)切换失败的原因,但是分析不出休眠(hibernate)导致系统卡死的具体原因,只能得到哪些设备在哪些阶段卡死了;根据这些设备结合源码,在步骤S1中添加动态跟踪点表,再次进行S2到S6的测试分析。由于添加了动态跟踪点表,用户能更进一步的了解这些卡死设备在休眠(hibernate)的运行方式和数据,因此找到具体原因和解决方法,结束本次分析。
通过上述步骤,本实施例针对系统待机切换过程的日志分析,不但能够检测错误信息这类内核主动报错的异常,还能够检测从日志中推导的异常,通过从大量的日志文件中检测到异常,无需通过人工筛查和分析日志文件,大大提升了异常的检测效率。同时本实施例通过在内核模块设置内核探针点,有效的解决了待机切换过程中的内核观测性的不足的问题,有利于得到更多的信息,加快异常的呈现和分析。本实施例的检测和分析的行为可通过修改、新增配置进行微调、扩充,因此也可广泛适用于各版本、各厂商的特定linux系统待机切换异常的检测。
下面对于各步骤进行具体说明。
本实施例的步骤S1中,配置检测工具目的在于控制检测工具的分析范围和行为,其中:
日志分割规则表用于将整个日志分割成单次的系统待机切换日志;根据不同类型的系统待机切换,每个表项由:系统待机切换类型、切换开始信息的正则表达式组、切换结束信息的正则表达式组;
异常匹配库用于抓取和判定日志中的异常信息,每个异常的抓取和判定由以下单个或多个字段控制及错误展现:异常表述名、匹配正则表达式组、不匹配正则表达式组、逻辑判定规则、所属模块;其中匹配正则表达式组为必备字段;
阶段锚点库用于探测系统待机切换中各个阶段,每类系统待机切换有一个单独的字典,由以下字段控制:系统待机切换类型、阶段锚点抓取规则表;阶段锚点抓取规则表的每个表项由:阶段名、匹配规则、默认顺序组成;
动态跟踪点表用于检测模块的分析规则,每个表项由:内核探针点、信息属性、有效域组成,内核探针点是指根据内核插桩、探测等技术在代码位置插入探测点,信息属性是指追踪探测点触发后的打印信息;有效域是指判定信息有效的过滤方法。
本实施例的步骤S2的目的在与增加内核的可观性,基于动态跟踪点表的内核探针点,根据内核插桩、探测等技术在代码位置插入探测点,基于动态跟踪点表的信息属性,当探测点触发后即可打印相关信息并增加在日志中,从而可以在内核提取更为详细的信息,使用户可以了解异常发生时的内核运行情况,便于找到具体原因和解决方法。
本实施例的步骤S4中,进行日志分割之前,包括:
S41:通过各个模块间在数据流上的前后及依赖关系,构建分析链,确定每个分析模块运行的先后顺序和是否可并行运行;
然后基于日志分割规则表,根据系统待机切换类型将所述日志分割成不同类型的单次系统待机切换日志数据,包括:
S42:进行日志分割,根据系统待机切换类型将日志分割成多组不同类型的单次系统待机切换日志数据,具体的,将所述日志的每一行匹配预设的日志分割规则表中切换开始信息的正则表达式组以及切换结束信息的正则表达式组,将每个切换开始信息的正则表达式匹配结果与对应切换结束信息的正则表达式匹配结果之间的数据作为对应的单次系统待机切换日志数据。
进行日志分割之后,包括:
S43:进行日志预处理,根据日志信息格式确定日志文件类型,并提取每条信息的内核时间、测试机记录时间、CPU号、进程号、信息内容;
进行日志预处理之后,针对每个单次系统待机切换日志数据,首先基于阶段锚点库分析探测系统待机切换的各个阶段,然后进行所有设备在系统待机切换时的各个阶段的行为分析,最后基于动态跟踪点表分析内核模块输出的信息,得到对应的分析结果,包括:
S44:进行流程阶段分析,根据阶段锚点库分析探测系统待机切换的各个阶段;
S45:进行设备分析,所有设备在系统待机切换时的各个阶段的行为分析,包含:在此期间的开始、结束时间、耗时时间、有无错误以及是否卡死;
S46:动态点分析,根据动态跟踪点表分析内核模块输出的信息。
最后,基于异常匹配库,从每个单次系统待机切换日志数据和分析结果中抓取错误信息并推导异常信息,包括:
S47:进行错误与故障分析,根据异常匹配库抓取和判定异常、故障以及前述分析判定推导异常;
S48:根据流程阶段分析结果,为其他模块提供流程分析方面信息。
本实施例中日志分割目的在于将日志分割成多组单次系统待机切换的日志数据,将所述日志的每一行匹配预设的日志分割规则表中切换开始信息的正则表达式组以及切换结束信息的正则表达式组时,包括:
遍历切换开始信息的正则表达式组与第L行日志数据进行正则匹配,如果存在匹配结果则在对应的单次系统待机切换日志数据中加入第L行日志数据,将匹配结果对应的系统待机切换类型作为所述单次系统待机切换日志数据的系统待机切换类型,并设置待机切换卡死标志位为真, L自加1并跳转执行遍历切换结束信息的正则表达式组与第L行日志数据进行正则匹配的步骤;如果不存在匹配结果则L自加1,重复遍历切换开始信息的正则表达式组与第L行日志数据进行正则匹配的步骤,直到L超出日志文件范围,结束并退出;
遍历切换结束信息的正则表达式组与第L行日志数据进行正则匹配,如果不存在匹配结果则在所述单次系统待机切换日志数据中加入第L行日志数据,L自加1并执行遍历切换结束信息的正则表达式组与第L行日志数据进行正则匹配的步骤,直到L超出日志文件范围,结束并退出;如果存在匹配结果则判断匹配结果的系统待机切换类型与所述单次系统待机切换日志数据的系统待机切换类型是否一致,如一致则设置待机切换卡死标志位为假,否则保持待机切换卡死标志位不变,在所述单次系统待机切换日志数据中加入第L行日志数据,跳转执行遍历切换开始信息的正则表达式组与第L行日志数据进行正则匹配的步骤,直到L超出日志文件范围,结束并退出。
相对应的,步骤S42的具体执行步骤如下:
S411:新建日志行索引变量L并初始化。
S412:读取第L行日志数据,遍历切换开始信息的正则表达式组进行正则匹配。如果匹配则代表发现一次系统待机切换,新建单次系统待机切换日志数据集,将匹配成功的正则表达式所代表的系统待机类型填入,将行号与日志数据填入,待机切换是否卡死标志位设置为真,L自加1。如果不匹配则L自加1,并重复S412;
S413:读取第L行日志数据,遍历切换结束信息的正则表达式组进行正则匹配。如果不匹配则将行号与日志数据填入数据集,L自加1并重复S413;如果匹配则代表此次待机切换结束,并进行如下操作:
S4131:判断匹配成功的正则表达式代表的系统待机切换类型是否与数据集中的系统切换类型一致,如一致则将待机切换是否卡死标志位设置为假;
S4132:将行号与日志数据填入数据集,并将数据集存入此系统切换类型的数据列表中
S4133:重复S412和S413。
上述步骤中当L超出日志文件范围,则立即结束。
如图3至图5所示,以某次睡眠(suspend)与休眠(hibernate)交替进行的场景为例,将日志分割成多组单次系统待机切换的日志数据时,包括:
1)根据步骤S411,新建单次待机转换数据字典,记为kdata,并设置为空;新建存储所有kdata的列表,记为kdatas;初始化日志行索引:index_line为0。
2)根据步骤S412和S413,如图3所示,读取第index_line行日志记为msg,如果kdata为空,则如图5所示,遍历日志分割规则表中开始信息的正则表达式组并进行匹配,如果匹配则添加"type"字段并置为rule中待机转换类型。添加"exit_err"字段且置为true,添加"data"字段为记录日志数据列表,并将msg和index_line写入列表;如果kdata不为空,则如图4所示,遍历日志分割规则表中结束信息的正则表达式组并进行匹配,如果匹配则将msg写入kdata中的“data”列表,如过此时匹配成功的正则表达式代表的待机类型与kdata中相同则,exit_err"置为false,同时将kdata存入kdatas,最后kdata置空,如果不匹配则将msg和index_line写入“data”列表。
3) 如图4和图5所示,如果非匹配到结束信息正则表达式则index_line加1,如果index_line超出日志索引范围则结束分割,否则继续重复上述步骤直到遍历完整个日志。
本实施例中,分析探测系统待机切换的各个阶段时,包括:
获取预处理后的单次系统待机切换日志数据,并根据所述单次系统待机切换日志数据的系统待机切换类型,从预设的阶段锚点库中选取对应的阶段锚点抓取规则表,初始化锚点探测列表;
遍历单次系统待机切换日志数据来匹配对应的阶段锚点抓取规则表中锚点的关键字,匹配到对应锚点关键字后,将对应的时间、日志行号信息、锚点对应的阶段名作为表项添加到锚点探测列表;
通过锚点探测列表前后表项间的时间差值计算对应的阶段时间。
相对应的,如图6所示,步骤S44的具体执行步骤如下:
S421:输入预处理后的单次系统待机切换日志数据列表,记为L_msg。根据系统待机切换类型,输入对应阶段锚点库,记为L_anchor;初始化锚点探测列表记为L_detect
S422:锚点探测:逐行遍历L_msg的msg数据来匹配L_anchor中每锚点的关键字,匹配对应锚点关键字后,将时间、日志行号信息、锚点对应的阶段名作为表项添加到L_detect;
S423:阶段流程分析:通过L_detect前后表项间的时间差值计算对应的阶段时间。
本实施中,进行所有设备在系统待机切换时的各个阶段的行为分析时,包括:
检测预处理后的单次系统待机切换日志数据中每个设备initcall函数的调用和返回;
根据每个设备对initcall函数的调用和返回确定调用时间、结束时间、返回值及时长。
相对应的,步骤S45的具体执行步骤如下:
S431:检测预处理后的单次系统待机切换日志数据中每个设备initcall函数的调用和返回。
S432:根据每个设备中每对initcall函数的调用和返回确定调用时间、结束时间、返回值及时长。如果仅有initcall调用没有返回则判定为卡死。
本实施例中,分析内核模块输出的信息时,包括:
提取预设的动态跟踪点表中每个表项的信息属性并转换成正则表达式;
遍历预处理后的单次系统待机切换日志数据,根据所述正则表达式进行正则匹配,得到匹配结果。
根据动态跟踪点表中对应的有效域,将所述匹配结果进行数据过滤,得到探测点的有效数据。
相对应的,步骤S46的具体执行步骤如下:
S441:提取动态跟踪点表中每个表项的信息属性并转换成正则表达式。
S442:遍历预处理后的单次系统待机切换日志数据,进行正则匹配,匹配后将信息保存。
S443:匹配后将信息结合对应的有效域,对数据进行过滤。
本实施例中,从每个单次系统待机切换日志数据和分析结果中抓取错误信息并推导异常信息时,包括:
若单次系统待机切换日志数据的待机切换卡死标志位为真,则记录对应的错误信息;
若单次系统待机切换日志数据的锚点探测列表中表项缺失,或者前后表项间的时间差值大于预设阈值,则记录对应的错误信息;
若单次系统待机切换日志数据中提取每个设备initcall返回错误或没有返回,则记录对应的错误信息;
遍历预处理后的单次系统待机切换日志数据,和预设的异常匹配库中的正则表达式进行匹配,根据匹配结果和逻辑规则确定是否存在异常,包括:
若进行抓取判定,如果逻辑规则为“与”,则目标数据匹配所有正则表达式时判定为异常数据;
若进行抓取判定,如果逻辑规则为“或”,则目标数据匹配到任一正则表达式时判定为异常数据;
若进行抓取判定,如果逻辑规则为集合,则目标数据匹配到对应集合的正则表达式时判定为异常数据;
若进行非抓取判定,如果对于某个异常目标数据匹配到对应正则表达式则不判定为异常数据。
相对应的,如图7所示,步骤S47的具体执行步骤如下:
S451:判定待机切换卡死错误,根据所述的日志分割数据中的待机切换卡死标志位: 如为真,则将此错误记录。
S452:分析阶段流程异常,提取时间过长的流程或缺失的流程,并将这些错误记录。
S453:判定设备错误,提取每个设备initcall返回错误或没有返回的情况,并将这些错误记录。
S454:遍历预处理后的单次系统待机切换日志数据和异常匹配库来抓取和判定异常、故障。进行抓取判定:如果逻辑判定规则为“与”,则需匹配所有正则表达式才判定为异常;如果规则为“或”则匹配到任一正则表达式即判定为异常;如果规则为集合则需匹配到对应集合的正则表达式。进行非抓取判定:如果抓取异常满足匹配正则表达式则不判定为异常。汇总错误信息:将抓取、判定的异常对应的异常表述名、日志信息、所属模块等信息汇总。如图8所示,具体如下:
1)遍历输入预处理后的单次系统待机切换日志数据列表,记为L_msg;输入异常抓取判定库记为L_err。
2)依次提取L_msg的数据msg,并提取L_err每个异常抓取判定数据记为err_detect。
3)对异常抓取判定数据err_detect进行错误的抓取和判定,如图9所示,提取err_detect中的匹配_type字段数据,匹配字段数据包含的正则表达式组数据regular_list。
4)如图9所示,根据匹配_type:如果值为“or”,匹配到regular_list任一一个则判定为异常;如果值为“and”, 如果某个正则表达式匹配成功则相应regular_list位置的标志位值true。当所有标志位为true时则判定异常,如果值为“匹配_conbine”, 如果某个正则表达式匹配成功则相应regular_list位置的标志位值true。当所判定为true的组合与匹配_conbine一致时判定为异常。
5) 判定为异常后将相关异常信息保存。
本实施例中,记录对应的错误信息时,包括:记录发生错误时单次系统待机切换日志数据的对应行号,记为Lerr;从每个单次系统待机切换日志数据的分析结果中抓取错误信息并推导异常信息时,步骤S48中,如图10所示,其他模块如错误分析的每个错误会记录发生错误时的行号记为Lerr;通过比对中锚点探测列表L_detect中每个表项的日志行号,在所述单次系统待机切换日志数据的锚点探测列表中找到最后一个小于所述行号Lerr的锚点,此锚点所记录的阶段名便为错误发生时的阶段,因此将该锚点所记录的阶段作为错误发生时的阶段;其他分析方法与前面所述类似。
实施例二
本实施例提出一种linux系统待机状态的异常检测系统,包括互相连接的微处理器和存储介质,所述微处理器被编程或配置以执行实施例一所述的linux系统待机状态的异常检测方法。
综上所述,本发明具有以下有益效果:
1) 提升效率:方便用户从巨量的日志文件中检测到异常,而无需人工筛查上百兆的日志文件。
2) 增强内核可观性:利用内核探针技术分析动态点的方法有效率的解决了待机切换过程中的内核观测性的不足的问题,有利于得到更多的信息,加快异常的呈现和分析。
3) 适用场景广:对不同类型的日志文件、不同类型的待机切换、不同版本的内核均适用。
4) 检测有效灵活:不仅能够检测到所有系统同待机切换过程中内核主动报错的异常,还能检测从日志中推导的异常,如切换过程系统卡死、设备卡死;用户还能自定义配置文件,方便的添加各种抓取、分析规则,扩展各种场景。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
Claims (10)
1.一种linux系统待机状态的异常检测方法,其特征在于,包括:
生成插入内核探针的内核模块,加载所述内核模块并进行待机切换测试,得到对应的日志;
根据系统待机切换类型将所述日志分割成不同类型的单次系统待机切换日志数据;
针对每个单次系统待机切换日志数据,首先分析探测系统待机切换的各个阶段,然后进行所有设备在系统待机切换时的各个阶段的行为分析,最后分析内核模块输出的信息,得到对应的分析结果;
从每个单次系统待机切换日志数据和分析结果中抓取错误信息并推导异常信息。
2.根据权利要求1所述的linux系统待机状态的异常检测方法,其特征在于,根据系统待机切换类型将所述日志分割成不同类型的单次系统待机切换日志数据时,包括:将所述日志的每一行匹配预设的日志分割规则表中切换开始信息的正则表达式组以及切换结束信息的正则表达式组,将每个切换开始信息的正则表达式匹配结果与对应切换结束信息的正则表达式匹配结果之间的数据作为对应的单次系统待机切换日志数据。
3.根据权利要求2所述的linux系统待机状态的异常检测方法,其特征在于,将所述日志的每一行匹配预设的日志分割规则表中切换开始信息的正则表达式组以及切换结束信息的正则表达式组时,包括:
遍历切换开始信息的正则表达式组与第L行日志数据进行正则匹配,如果存在匹配结果则在对应的单次系统待机切换日志数据中加入第L行日志数据,将匹配结果对应的系统待机切换类型作为所述单次系统待机切换日志数据的系统待机切换类型,并设置待机切换卡死标志位为真, L自加1并跳转执行遍历切换结束信息的正则表达式组与第L行日志数据进行正则匹配的步骤;如果不存在匹配结果则L自加1,重复遍历切换开始信息的正则表达式组与第L行日志数据进行正则匹配的步骤,直到L超出日志文件范围,结束并退出;
遍历切换结束信息的正则表达式组与第L行日志数据进行正则匹配,如果不存在匹配结果则在所述单次系统待机切换日志数据中加入第L行日志数据,L自加1并执行遍历切换结束信息的正则表达式组与第L行日志数据进行正则匹配的步骤,直到L超出日志文件范围,结束并退出;如果存在匹配结果则判断匹配结果的系统待机切换类型与所述单次系统待机切换日志数据的系统待机切换类型是否一致,如一致则设置待机切换卡死标志位为假,否则保持待机切换卡死标志位不变,在所述单次系统待机切换日志数据中加入第L行日志数据,跳转执行遍历切换开始信息的正则表达式组与第L行日志数据进行正则匹配的步骤,直到L超出日志文件范围,结束并退出。
4.根据权利要求3所述的linux系统待机状态的异常检测方法,其特征在于,分析探测系统待机切换的各个阶段时,包括:
获取预处理后的单次系统待机切换日志数据,并根据所述单次系统待机切换日志数据的系统待机切换类型,从预设的阶段锚点库中选取对应的阶段锚点抓取规则表,初始化锚点探测列表;
遍历单次系统待机切换日志数据来匹配对应的阶段锚点抓取规则表中锚点的关键字,匹配到对应锚点关键字后,将对应的时间、日志行号信息、锚点对应的阶段名作为表项添加到锚点探测列表;
通过锚点探测列表前后表项间的时间差值计算对应的阶段时间。
5.根据权利要求1所述的linux系统待机状态的异常检测方法,其特征在于,进行所有设备在系统待机切换时的各个阶段的行为分析时,包括:
检测预处理后的单次系统待机切换日志数据中每个设备initcall函数的调用和返回;
根据每个设备对initcall函数的调用和返回确定调用时间、结束时间、返回值及时长。
6.根据权利要求1所述的linux系统待机状态的异常检测方法,其特征在于,分析内核模块输出的信息时,包括:
提取预设的动态跟踪点表中每个表项的信息属性并转换成正则表达式,每个表项均包括一一对应的内核探针点、信息属性和有效域;
遍历预处理后的单次系统待机切换日志数据,根据所述正则表达式进行正则匹配,得到匹配结果;
根据动态跟踪点表中对应的有效域,将所述匹配结果进行数据过滤,得到探测点的有效数据。
7.根据权利要求1所述的linux系统待机状态的异常检测方法,其特征在于,从每个单次系统待机切换日志数据和分析结果中抓取错误信息并推导异常信息时,包括:
若单次系统待机切换日志数据的待机切换卡死标志位为真,则记录对应的错误信息;
若单次系统待机切换日志数据的锚点探测列表中表项缺失,或者前后表项间的时间差值大于预设阈值,则记录对应的错误信息;
若单次系统待机切换日志数据中提取每个设备initcall返回错误或没有返回,则记录对应的错误信息;
遍历预处理后的单次系统待机切换日志数据,和预设的异常匹配库中的正则表达式进行匹配,根据匹配结果和逻辑规则确定是否存在异常。
8.根据权利要求7所述的linux系统待机状态的异常检测方法,其特征在于,根据匹配结果和逻辑规则确定是否存在异常时,包括:
若进行抓取判定,如果逻辑规则为“与”,则目标数据匹配所有正则表达式时判定为异常数据;
若进行抓取判定,如果逻辑规则为“或”,则目标数据匹配到任一正则表达式时判定为异常数据;
若进行抓取判定,如果逻辑规则为集合,则目标数据匹配到对应集合的正则表达式时判定为异常数据;
若进行非抓取判定,如果对于某个异常目标数据匹配到对应正则表达式则不判定为异常数据。
9.根据权利要求7所述的linux系统待机状态的异常检测方法,其特征在于,记录对应的错误信息时,包括:记录发生错误时单次系统待机切换日志数据的对应行号;从每个单次系统待机切换日志数据的分析结果中抓取错误信息并推导异常信息时,还包括:在所述单次系统待机切换日志数据的锚点探测列表中找到最后一个小于所述行号的锚点,将该锚点所记录的阶段作为错误发生时的阶段。
10.一种linux系统待机状态的异常检测系统,其特征在于,包括互相连接的微处理器和存储介质,所述微处理器被编程或配置以执行权利要求1-9任一所述的linux系统待机状态的异常检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311446824.7A CN117170984B (zh) | 2023-11-02 | 2023-11-02 | 一种linux系统待机状态的异常检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311446824.7A CN117170984B (zh) | 2023-11-02 | 2023-11-02 | 一种linux系统待机状态的异常检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117170984A CN117170984A (zh) | 2023-12-05 |
CN117170984B true CN117170984B (zh) | 2024-01-30 |
Family
ID=88930172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311446824.7A Active CN117170984B (zh) | 2023-11-02 | 2023-11-02 | 一种linux系统待机状态的异常检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117170984B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013026312A1 (zh) * | 2011-08-23 | 2013-02-28 | 中兴通讯股份有限公司 | 基于日志检测的告警方法及系统 |
WO2015146086A1 (ja) * | 2014-03-28 | 2015-10-01 | 日本電気株式会社 | ログ分析システム、障害原因分析システム、ログ分析方法、および、記録媒体 |
WO2016161381A1 (en) * | 2015-04-03 | 2016-10-06 | Oracle International Corporation | Method and system for implementing a log parser in a log analytics system |
JP2017058751A (ja) * | 2015-09-14 | 2017-03-23 | Necプラットフォームズ株式会社 | 情報処理装置、ログ取得方法およびログ取得プログラム |
WO2017124704A1 (zh) * | 2016-01-18 | 2017-07-27 | 中兴通讯股份有限公司 | 日志内容的显示方法及装置 |
CN107145445A (zh) * | 2017-05-05 | 2017-09-08 | 携程旅游信息技术(上海)有限公司 | 软件自动化测试的报错日志的自动分析方法和系统 |
WO2017173969A1 (zh) * | 2016-04-06 | 2017-10-12 | 广州广电运通金融电子股份有限公司 | 一种基于日志分析的故障定位方法及装置 |
CN114281657A (zh) * | 2020-09-28 | 2022-04-05 | 华为技术有限公司 | 一种系统日志采集方法及装置 |
WO2023277802A2 (en) * | 2021-07-01 | 2023-01-05 | Shopee Singapore Private Limited | Device and method for identifying errors in a software application |
WO2023015670A1 (zh) * | 2021-08-12 | 2023-02-16 | 广东艾檬电子科技有限公司 | 日志内容的脱敏方法、装置、设备和介质 |
WO2023071039A1 (zh) * | 2021-10-26 | 2023-05-04 | 苏州浪潮智能科技有限公司 | 一种故障诊断方法、装置、设备及可读存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070128899A1 (en) * | 2003-01-12 | 2007-06-07 | Yaron Mayer | System and method for improving the efficiency, comfort, and/or reliability in Operating Systems, such as for example Windows |
-
2023
- 2023-11-02 CN CN202311446824.7A patent/CN117170984B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013026312A1 (zh) * | 2011-08-23 | 2013-02-28 | 中兴通讯股份有限公司 | 基于日志检测的告警方法及系统 |
WO2015146086A1 (ja) * | 2014-03-28 | 2015-10-01 | 日本電気株式会社 | ログ分析システム、障害原因分析システム、ログ分析方法、および、記録媒体 |
WO2016161381A1 (en) * | 2015-04-03 | 2016-10-06 | Oracle International Corporation | Method and system for implementing a log parser in a log analytics system |
JP2017058751A (ja) * | 2015-09-14 | 2017-03-23 | Necプラットフォームズ株式会社 | 情報処理装置、ログ取得方法およびログ取得プログラム |
WO2017124704A1 (zh) * | 2016-01-18 | 2017-07-27 | 中兴通讯股份有限公司 | 日志内容的显示方法及装置 |
WO2017173969A1 (zh) * | 2016-04-06 | 2017-10-12 | 广州广电运通金融电子股份有限公司 | 一种基于日志分析的故障定位方法及装置 |
CN107145445A (zh) * | 2017-05-05 | 2017-09-08 | 携程旅游信息技术(上海)有限公司 | 软件自动化测试的报错日志的自动分析方法和系统 |
CN114281657A (zh) * | 2020-09-28 | 2022-04-05 | 华为技术有限公司 | 一种系统日志采集方法及装置 |
WO2023277802A2 (en) * | 2021-07-01 | 2023-01-05 | Shopee Singapore Private Limited | Device and method for identifying errors in a software application |
WO2023015670A1 (zh) * | 2021-08-12 | 2023-02-16 | 广东艾檬电子科技有限公司 | 日志内容的脱敏方法、装置、设备和介质 |
WO2023071039A1 (zh) * | 2021-10-26 | 2023-05-04 | 苏州浪潮智能科技有限公司 | 一种故障诊断方法、装置、设备及可读存储介质 |
Non-Patent Citations (4)
Title |
---|
Have it Your Way: Generating Customized Log Datasets With a Model-Driven Simulation Testbed;Max Landauer等;《IEEE TRANSACTIONS ON RELIABILITY》;论文第402-415页 * |
Linux下日志分析与异常检测方法和策略;WBOY;《https://www.php.cn/faq/585426.html》;论文第1-5页 * |
如何使用Linux进行日志分析和故障排查;PHPz;《https://www.php.cn/faq/588025.html》;论文第1-5页 * |
如何查看 Linux 关机异常日志? (linux 关机异常日志);后浪云(IDC.NET);《https://www.idc.net/help/126619/》;论文第1-10页 * |
Also Published As
Publication number | Publication date |
---|---|
CN117170984A (zh) | 2023-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Pacheco et al. | Eclat: Automatic generation and classification of test inputs | |
CN112463581B (zh) | 一种对分布式系统进行模糊测试的方法及系统 | |
US20060212852A1 (en) | Methods, systems and computer program products for detecting memory leaks | |
CN109885499B (zh) | 一种机器人自动化测试系统及测试方法 | |
US20200143061A1 (en) | Method and apparatus for tracking location of input data that causes binary vulnerability | |
CN105184169A (zh) | Windows操作环境下基于插桩工具的漏洞检测方法 | |
CN115757157A (zh) | 一种高效回归的实现方法、装置及存储介质 | |
CN108009085B (zh) | 渠道包测试方法 | |
CN112380542A (zh) | 基于错误场景生成的物联网固件漏洞挖掘方法及系统 | |
CN117170984B (zh) | 一种linux系统待机状态的异常检测方法及系统 | |
US20130318505A1 (en) | Efficient Unified Tracing of Kernel and User Events with Multi-Mode Stacking | |
US6513133B1 (en) | Uniformly distributed induction of exceptions for testing computer software | |
CN116107794B (zh) | 一种舰船软件故障自动诊断方法、系统及存储介质 | |
CN102521132A (zh) | 实时输出日志的自动化测试方法和系统 | |
CN112148599A (zh) | 性能压测方法、装置及设备 | |
CN111309584B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN116522345A (zh) | 漏洞挖掘方法、装置、设备及可读存储介质 | |
CN110928793A (zh) | 一种正则表达式检测方法、装置及计算机可读存储介质 | |
CN106970862B (zh) | 一种内存抖动自动化测试方法及装置 | |
CN105760264A (zh) | 一种检测服务器故障硬件设备的方法及装置 | |
US20080115016A1 (en) | System and method for analyzing unknown file format to perform software security test | |
CN114328206A (zh) | 一种能够实现高覆盖率且高效率的白盒异常测试方法 | |
KR100924519B1 (ko) | 소프트웨어 보안 테스팅을 수행하기 위한 알려지지 않은파일 포맷 분석 시스템 및 방법 | |
CN110347589B (zh) | 一种软件单元测试自动化检测方法及系统 | |
CN112416735A (zh) | 一种应用程序检测方法、装置及终端设备、存储介质 |
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 | ||
GR01 | Patent grant |