CN112068981A - Linux操作***中基于知识库的故障扫描恢复方法及*** - Google Patents
Linux操作***中基于知识库的故障扫描恢复方法及*** Download PDFInfo
- Publication number
- CN112068981A CN112068981A CN202011019038.5A CN202011019038A CN112068981A CN 112068981 A CN112068981 A CN 112068981A CN 202011019038 A CN202011019038 A CN 202011019038A CN 112068981 A CN112068981 A CN 112068981A
- Authority
- CN
- China
- Prior art keywords
- fault
- log
- operating system
- knowledge base
- data
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/079—Root cause analysis, i.e. error or fault diagnosis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明公开了一种Linux操作***中基于知识库的故障扫描恢复方法及***,针对Linux操作***故障极难精确定位、***故障修复周期长、技术要求高、成本高的问题,本发明通过集操作***的日志;针对收集到的日志与预先根据日志建立的关键词类型的故障知识库、n‑gram类型的故障知识库进行扫描以识别故障;若识别出故障则针对故障进行恢复,能够自动发现Linux***中运行的故障扫描,减少现有的人工分析故障以及修复故障的介入,缩短故障的发现到故障的修复的周期,还可进一步根据故障问题通过自动化的故障修复提高***可用性、并降低***维护成本。
Description
技术领域
本发明涉及计算机***软件领域,具体涉及一种Linux操作***中基于知识库的故障扫描恢复方法及***。
背景技术
目前操作***普遍实现了日志机制,此机制暴露出了一系列的开发接口与管理界面,使得应用程序开发人员能通过日志开发接口写入与读取应用程序运行时的状态信息,也可以使得操作***的管理员能够管理与查询整个操作***的日志,从而可实现基于日志进行应用程序与操作***的故障修复。
Windows操作***使用了Event Log进行***与应用的日志管理,对应的接口函数以Evt开头,例如EvtOpenLog等。此外,***管理员则可以通过Windows自带的Event Viewer管理并查询Windows下的事件日志,包括每条日志的时间、分类、内容、级别等。Windows的Event Log通过提供基础的日志服务,使得开发人员和管理员可以灵活地对日志进行查询与进一步处理,但是只有Windows对应错误号的日志才能有一定的帮助文档,不过并没有额外的工具可以基于日志信息进行故障分析与自动诊断。能提供类似功能的软件一般会从各个安装了Windows操作***的计算机收集Event Log,将其进行存储,并提供更易用的图表与查询功能。这些工具有商业的,也有开源的,比较著名的包括SolarWinds、ManageEngine、LOGalyze、NetVizura等。不过,由于每个应用程序的日志完全由应用程序自身定义,因此难以使用通用的方法对应用程序的日志进行处理,以快速进行故障修复,一般是各个应用程序开发人员根据日志信息开发特定于此应用程序的小工具进行日志提取与故障分析。同时Windows***提供了***故障诊断、***事件记录、还原点、多模式启动、紧急恢复启动盘、WindowsPE等技术,提供了较为完善的使用故障扫描与***修复还原手段。其中,***事件记录提供了***故障扫描及修复的基础数据;设置还原点能够保障***在使用故障时恢复到事先备份好的***节点;多模式启动方案能够保证在***出现使用故障时,用户可以选择进入不同的***模式进行***诊断与恢复;紧急恢复启动盘提供了在***无法启动模式下进入外部***进行恢复的可能性;WindowsPE则提供了一整套Windows定制与修改的工具。此外,市场上还有大量第三方的Windows***修复与恢复工具,包括Ghost、FixWin、FixWMP等,国内厂商也提供了具有Windows修复与恢复功能的产品。这些产品在很大程度上能帮助Windows进行***修复与恢复,可靠性极高。
在Linux操作***领域,早期Linux提供了基于/var/log目录下的system.log等分类日志文件的方式,使得不同的日志可以存储到不同的文本日志文件中。后期,Linux发行版普遍采用了可管理性与性能更好的systemd***,并从此***中引入了基于journald的日志***。因此,Linux也一直具备相应的日志处理功能。应用程序可以使用syslog接口写入日志,并通过journalctl等命令查询日志,也可以通过设置将所有的日志都发送到统一的日志服务器。但是与Windows操作***类似,通过自动化的方法进行日志处理仍相当罕见,一般是通过应用程序开发者手工进行工具开发,并进行日志提取,从而展开故障修复。现阶段Linux操作***在使用过程中出现的故障,基本是要靠日志人工进行故障分析诊断,故障智能检测及修复技术基本处于缺失状态,对操作***管理员的专业技术水平要求较高。
Linux操作***也提供了多种启动模式,即恢复模式与正常模式。在恢复模式下,用户可以运行少量的***工具进行手工恢复,但缺乏实用的自动化工具进行***升级及使用故障诊断与恢复。目前国产操作***升级及故障诊断、故障修复与恢复手段较为贫乏,一旦***出现故障,普通用户极难找到合适工具进行***诊断和修复,仅专业用户才有可能进行定位和修复***,不利于Linux操作***以及基于Linux开发的国产操作***的推广使用。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种Linux操作***中基于知识库的故障扫描恢复方法及***,本发明针对Linux操作***故障极难精确定位、***故障修复周期长、技术要求高、成本高的问题,本发明能够自动发现Linux***中运行的故障扫描,减少现有的人工分析故障以及修复故障的介入,缩短故障的发现到故障的修复的周期,还可进一步根据故障问题通过自动化的故障修复提高***可用性、并降低***维护成本。
为了解决上述技术问题,本发明采用的技术方案为:
一种Linux操作***中基于知识库的故障扫描恢复方法,包括:
1)收集操作***的日志;
2)针对收集到的日志与预先根据日志建立的关键词类型的故障知识库、n-gram类型的故障知识库进行扫描以识别故障;
3)若识别出故障则针对故障进行恢复。
可选地,步骤1)中收集操作***的日志包括操作***中指定的***服务单元的日志,所述***服务单元是指Linux操作***中路径及名称为/usr/lib/systemd/system、/run/systemd/system和/etc/systemd/system三个文件包含***服务单元的全部或部分。
可选地,步骤1)中***服务单元是指Linux操作***中路径及名称为/usr/lib/systemd/system、/run/systemd/system和/etc/systemd/system三个文件包含的下述***服务单元:***服务单元,用于定义***服务;级别模拟单元,用于模拟实现“运行级别”;设备单元,用于定义内核识别的设备;挂载点单元,用于定义文件***挂载点;套接字单元,用于标识进程间通信的套接字文件;快照单元,用于管理***快照;交换单元,用于标识交换设备;自动挂载单元,用于文件***自动点设备;路径单元,用于定义文件***中的文件或目录。
可选地,步骤2)中关键词类型的故障知识库包括基于操作***的日志构建的关键词类型故障知识条目,所述关键词类型故障知识条目包含多个表项,每个表项包含6个域,分别为故障类型、故障关键词,故障帮助信息、故障修复方案、故障优先级、故障修复过程中是否需要重启;步骤2)之前还包括构建关键词类型故障知识条目的步骤包括:
S1A)从日志样本数据中提取包含故障信息的日志数据,提取方法为下述两种方式中的一种:一种方式是在实际发生故障时通过手动过滤、分析的方式获取包含故障信息的日志数据;另外一种方式是使用扫描出的故障信息,将该故障信息中的故障原始日志数据作为包含故障信息的日志数据;
S2A)针对每一种故障:从包含故障信息的日志数据中确定该故障的故障关键词,并确定故障类型、故障帮助信息、故障修复方案、故障优先级、故障修复过程中是否需要重启;
S3A)针对每一种故障:根据其对应的故障类型、故障关键词,故障帮助信息、故障修复方案、故障优先级、故障修复过程中是否需要重启生成对应的关键词类型故障知识条目。
可选地,步骤2)中关键词类型的故障知识库包括基于操作***的日志构建的故障n-gram类型知识条目,所述故障n-gram类型知识条目包含多个表项,每个表项包含6个域,分别为“Identifiers”字段、日志模板、日志模板参数、日志键值的概率数据集、历史日志键值长度参数n、概率范围阈值参数g,其中“Identifiers”字段用于记录***日志的来源,以确定是否支持用n-gram类型故障知识条目进行故障扫描,日志模板为日志数据的固定模板,日志模板参数为日志数据的变化内容,日志键值的概率数据集为n-gram算法接口生成的结果,历史日志键值长度参数n为n-gram算法输入,概率范围阈值参数g为n-gram算法输入,n-gram算法的输入为日志键值序列、历史日志键值长度参数n以及概率范围阈值参数g,输出为日志模板序列的概率数据集;步骤2)之前还包括构建故障n-gram类型知识条目的步骤包括:
S1B)根据日志样本数据中的“Identifiers”字段提取日志样本中某个软件的日志数据,包括正常运行日志和故障日志;
S2B)进行日志解析将提取的日志数据变处理成日志模板、日志模板参数:首先采用Drain算法将日志样本数据中每条原始日志使用树型结构组织起来,原始日志为这个树型结构的叶子节点,原始日志条目在加入到树的叶子节点上之前必须扫描并对比整个树的叶子,在确保没有相同或者相似的叶子的存在的情况下加入树的新的叶子节点,从而通过保证该树结构的每个叶子节点都是不一样的来实现提取日志模块以及日志模板参数,提取的日志模板为单条日志记录的正则表达式;然后手动排除解析错误的日志模块,完成错误的日志模板的剔除;
S3B)将日志样本数据处理成日志键值序列,这个日志键值序列可以当成类似NLP中的语料库,然后通过n-gram算法对日志键值序列中的日志键值的出现顺序进行记录和统计,使用这个统计结果为输入算出日志键序列中每大于0的第n个日志键后第n+1个日志键值出现的概率,并确定对应的概率范围阈值参数g,这些概率数据汇聚在一起形成日志键值概率数据集;
S4B)针对每一个日志键值,将其对应的将“Identifiers”字段、日志模板、日志模板参数、日志键值的概率数据集、历史日志键值长度参数n、概率范围阈值参数g创建一项故障n-gram类型知识条目,最终完成构建故障n-gram类型知识条目的创建。
可选地,步骤2)的步骤包括:
2.1)提取待处理日志数据中的“Identifiers”字段信息,查询这个“Identifiers”字段信息是否包含在n-gram类型故障知识条目中,若查询成功则跳转执行步骤2.3)以进行n-gram类型的故障扫描,否则跳转执行步骤2.2)以进行关键词类型的故障扫描;
2.2)确定待处理日志数据的故障关键词,遍历故障知识库中的关键词类型故障知识条目并提取故障关键词,将提取得到的故障关键词逐个与待处理日志数据的故障关键词进行匹配,若匹配成功则判定发现故障并跳转执行步骤2.5),否则,结束并退出;
2.3)针对待处理日志数据,将其使用故障n-gram类型知识条目中的日志模板,日志模板数据为单条日志记录的正则表达式,使用该正则表达式对单条日志数据进行正则匹配,输出匹配成功的日志模板对应的日志键值LogKey;
2.4)提取匹配的故障n-gram类型知识条目中的历史日志键值长度参数n、概率范围阈值参数g,在历史日志键值队列中取出后n个日志键值,将该日志键值队列作为输入来查询故障n-gram类型知识条目中日志键值的概率数据集,输出概率值从大到小进行排序的前g个日志键值概率数组,数组中单项的值中包含日志键值和对应的概率,判断生成的日志键值LogKey是否存在与这个概率数组中,不存在代表故障扫描发现***故障,转步骤2.5),否则代表***运行正常,结束并退出;
2.5)记录扫描出来的故障信息故障关键词、故障原始日志数据、故障扫描使用的模型类型,并设置扫描修复***中的故障状态标志;
2.6)若有得到日志键值LogKey,则将日志键值LogKey添加到历史日志键值队列中,跳转执行步骤3)。
可选地,步骤3)的步骤包括:
3.1)提取记录下来的故障信息中的故障关键词,通过故障关键词查找故障知识库中的故障知识条目;
3.2)获取故障知识条目的修复方案,有多个修复方案的情况下使用故障知识条目的故障优先级进行排序,尝试执行这些故障修复方案中的操作;
3.3)测试修复方案的修复结果,若修复成功,则跳转执行步骤3.4);若修复失败,则跳转执行步骤3.5);
3.4)将故障修复过程中产生的故障修复数据通过故障修复数据写入接口写入操作***的根文件***中,则跳转执行步骤3.7);
3.5)通过故障关键词继续查找其他故障修复方案,若查找成功,则跳转执行步骤3.1),若查找失败,则跳转执行步骤3.6);
3.6)使用故障修复数据回滚接口丢弃掉故障修复过程中产生的故障修复数据;
3.7)设置故障修复状态,通知修复结果,结束。
此外,本发明还提供一种Linux操作***中基于知识库的故障扫描恢复***,包括:
日志收集模块,收集操作***的日志;
故障扫描模块,针对收集到的日志与预先根据日志建立的关键词类型的故障知识库、n-gram类型的故障知识库进行扫描以识别故障;
故障修复程序模块,用于在识别出故障时针对故障进行恢复。
此外,本发明还提供一种Linux操作***中基于知识库的故障扫描恢复***,包括计算机设备,该计算机设备中至少包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述Linux操作***中基于知识库的故障扫描恢复方法的步骤;或者该存储器中存储有被编程或配置以执行所述Linux操作***中基于知识库的故障扫描恢复方法的计算机程序。
此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行所述Linux操作***中基于知识库的故障扫描恢复方法的计算机程序。
和现有技术相比,本发明具有下述优点:针对Linux操作***故障极难精确定位、***故障修复周期长、技术要求高、成本高的问题,本发明通过集操作***的日志;针对收集到的日志与预先根据日志建立的关键词类型的故障知识库、n-gram类型的故障知识库进行扫描以识别故障;若识别出故障则针对故障进行恢复,能够自动发现Linux***中运行的故障扫描,减少现有的人工分析故障以及修复故障的介入,缩短故障的发现到故障的修复的周期,还可进一步根据故障问题通过自动化的故障修复提高***可用性、并降低***维护成本。
附图说明
图1为本发明实施例方法的基本流程示意图。
图2为本发明实施例***的原理结构示意图。
图3为本发明实施例方法的详细流程示意图。
具体实施方式
如图1所示,本实施例Linux操作***中基于知识库的故障扫描恢复方法包括:
1)收集操作***的日志;
2)针对收集到的日志与预先根据日志建立的关键词类型的故障知识库、n-gram类型的故障知识库进行扫描以识别故障;
3)若识别出故障则针对故障进行恢复。
本实施例中,步骤1)中收集操作***的日志包括操作***中指定的***服务单元的日志,所述***服务单元是指Linux操作***中路径及名称为/usr/lib/systemd/system、/run/systemd/system和/etc/systemd/system三个文件包含***服务单元的全部或部分。
作为一种可选的实施方式,为了提升运行效率,本实施例中步骤1)中***服务单元是指Linux操作***中路径及名称为/usr/lib/systemd/system、/run/systemd/system和/etc/systemd/system三个文件包含的下述***服务单元:
***服务单元(Service unit,文件扩展名为.service),用于定义***服务;
级别模拟单元(Target unit,文件扩展名为.target),用于模拟实现“运行级别”;
设备单元(Device unit,文件扩展名为.device),用于定义内核识别的设备;
挂载点单元(Mount unit,文件扩展名为.mount),用于定义文件***挂载点;
套接字单元(Socket unit,文件扩展名为.socket),用于标识进程间通信的套接字文件;
快照单元(Snapshot unit,文件扩展名为.snapshot),用于管理***快照;
交换单元(Swap unit,文件扩展名为.swap),用于标识交换设备;
自动挂载单元(Automount unit,文件扩展名为.automount),用于文件***自动点设备;
路径单元(Path unit,文件扩展名为.path),用于定义文件***中的文件或目录。
本实施例中,步骤2)中关键词类型的故障知识库包括基于操作***的日志构建的关键词类型故障知识条目,所述关键词类型故障知识条目包含多个表项,每个表项包含6个域,分别为故障类型、故障关键词,故障帮助信息、故障修复方案、故障优先级、故障修复过程中是否需要重启;步骤2)之前还包括构建关键词类型故障知识条目的步骤包括:
S1A)从日志样本数据中提取包含故障信息的日志数据,提取方法为下述两种方式中的一种:一种方式是在实际发生故障时通过手动过滤、分析的方式获取包含故障信息的日志数据;另外一种方式是使用扫描出的故障信息,将该故障信息中的故障原始日志数据作为包含故障信息的日志数据;
S2A)针对每一种故障:从包含故障信息的日志数据中确定该故障的故障关键词,并确定故障类型、故障帮助信息、故障修复方案、故障优先级、故障修复过程中是否需要重启;
S3A)针对每一种故障:根据其对应的故障类型、故障关键词,故障帮助信息、故障修复方案、故障优先级、故障修复过程中是否需要重启生成对应的关键词类型故障知识条目。
本实施例中,步骤2)中关键词类型的故障知识库包括基于操作***的日志构建的故障n-gram类型知识条目,所述故障n-gram类型知识条目包含多个表项,每个表项包含6个域,分别为“Identifiers”字段、日志模板、日志模板参数、日志键值的概率数据集、历史日志键值长度参数n、概率范围阈值参数g,其中“Identifiers”字段用于记录***日志的来源,以确定是否支持用n-gram类型故障知识条目进行故障扫描,日志模板为日志数据的固定模板,日志模板参数为日志数据的变化内容,日志键值的概率数据集为n-gram算法接口生成的结果,历史日志键值长度参数n为n-gram算法输入,概率范围阈值参数g为n-gram算法输入,n-gram算法的输入为日志键值序列、历史日志键值长度参数n以及概率范围阈值参数g,输出为日志模板序列的概率数据集;步骤2)之前还包括构建故障n-gram类型知识条目的步骤包括:
S1B)根据日志样本数据中的“Identifiers”字段提取日志样本中某个软件的日志数据,包括正常运行日志和故障日志;
S2B)进行日志解析将提取的日志数据变处理成日志模板、日志模板参数:首先采用Drain算法将日志样本数据中每条原始日志使用树型结构组织起来,原始日志为这个树型结构的叶子节点,原始日志条目在加入到树的叶子节点上之前必须扫描并对比整个树的叶子,在确保没有相同或者相似的叶子的存在的情况下加入树的新的叶子节点,从而通过保证该树结构的每个叶子节点都是不一样的来实现提取日志模块以及日志模板参数,提取的日志模板为单条日志记录的正则表达式;然后手动排除解析错误的日志模块,完成错误的日志模板的剔除;
S3B)将日志样本数据处理成日志键值序列,这个日志键值序列可以当成类似NLP中的语料库,然后通过n-gram算法对日志键值序列中的日志键值的出现顺序进行记录和统计,使用这个统计结果为输入算出日志键序列中每大于0的第n个日志键后第n+1个日志键值出现的概率,并确定对应的概率范围阈值参数g,这些概率数据汇聚在一起形成日志键值概率数据集;
S4B)针对每一个日志键值,将其对应的将“Identifiers”字段、日志模板、日志模板参数、日志键值的概率数据集、历史日志键值长度参数n、概率范围阈值参数g创建一项故障n-gram类型知识条目,最终完成构建故障n-gram类型知识条目的创建。
本实施例中,步骤2)的步骤包括:
2.1)提取待处理日志数据中的“Identifiers”字段信息,查询这个“Identifiers”字段信息是否包含在n-gram类型故障知识条目中,若查询成功则跳转执行步骤2.3)以进行n-gram类型的故障扫描,否则跳转执行步骤2.2)以进行关键词类型的故障扫描;
2.2)确定待处理日志数据的故障关键词,遍历故障知识库中的关键词类型故障知识条目并提取故障关键词,将提取得到的故障关键词逐个与待处理日志数据的故障关键词进行匹配,若匹配成功则判定发现故障并跳转执行步骤2.5),否则,结束并退出;
2.3)针对待处理日志数据,将其使用故障n-gram类型知识条目中的日志模板,日志模板数据为单条日志记录的正则表达式,使用该正则表达式对单条日志数据进行正则匹配,输出匹配成功的日志模板对应的日志键值LogKey;
2.4)提取匹配的故障n-gram类型知识条目中的历史日志键值长度参数n、概率范围阈值参数g,在历史日志键值队列中取出后n个日志键值,将该日志键值队列作为输入来查询故障n-gram类型知识条目中日志键值的概率数据集,输出概率值从大到小进行排序的前g个日志键值概率数组,数组中单项的值中包含日志键值和对应的概率,判断生成的日志键值LogKey是否存在与这个概率数组中,不存在代表故障扫描发现***故障,转步骤2.5),否则代表***运行正常,结束并退出;
2.5)记录扫描出来的故障信息故障关键词、故障原始日志数据、故障扫描使用的模型类型,并设置扫描修复***中的故障状态标志;
2.6)若有得到日志键值LogKey,则将日志键值LogKey添加到历史日志键值队列中,跳转执行步骤3)。
本实施例中,步骤3)的步骤包括:
3.1)提取记录下来的故障信息中的故障关键词,通过故障关键词查找故障知识库中的故障知识条目;
3.2)获取故障知识条目的修复方案,有多个修复方案的情况下使用故障知识条目的故障优先级进行排序,尝试执行这些故障修复方案中的操作;
3.3)测试修复方案的修复结果,若修复成功,则跳转执行步骤3.4);若修复失败,则跳转执行步骤3.5);
3.4)将故障修复过程中产生的故障修复数据通过故障修复数据写入接口写入操作***的根文件***中,则跳转执行步骤3.7);
3.5)通过故障关键词继续查找其他故障修复方案,若查找成功,则跳转执行步骤3.1),若查找失败,则跳转执行步骤3.6);
3.6)使用故障修复数据回滚接口丢弃掉故障修复过程中产生的故障修复数据;
3.7)设置故障修复状态,通知修复结果,结束。
综上所述,本实施例Linux操作***中基于知识库的故障扫描恢复方法的核心思想是以操作***中的日志为***故障分析的原材料,使用两种方式从操作***中的日志中提炼故障知识库,一种方式是基于故障关键词:从以往发生的***故障的日志中提取故障关键词,并围绕故障关键词建立故障修复帮助信息、故障修复脚本、故障修复优先级、修复过程是否需要重启信息,将这些信息集合在一起构建故障关键词类型故障知识库;另外一种方式是基于正常与异常日志间关系:基于***日常运行的日志,该日志包含***正常运行日志和异常运行日志,将这些日志的每一行日志当成一个的日志键,那么整个日志数据就可以被当初一个日志键序列,整个日志数据中会存在重复的日志,为了表达这种重复关系,这个日志键必须具有唯一性,保证日志键的唯一性的方法是将日志数据中每一行日志抽象成一个日志运行模板和日志模板参数,日志模板中带有日志键值,日志模板相同代表为重复的日志,那么在日志键序列中用同一个日志键代表重复的日志。这个日志键序列使用自然语言处理中常用的n-gram算法,n-gram算法的原理是对日志键序列中的日志键的出现顺序进行记录和统计,使用这个统计结果为输入算出日志键序列中每n(n>0)个日志键后第n+1个日志键值出现的概率,这些概率数据汇聚在一起形成日志键值概率数据集,开始故障扫描时加载概率数据集,然后生成n-gram类型的故障扫描模型,使用这个故障扫描模型对操作***中的日志进行基于日志模板概率的故障扫描,如果发现概率偏移较大则说明***应用运行不正常,从而扫描到操作***的故障,该过程中抽象出来的日志模板、日志模板参数以及n-gram算法算出的概率集合在一起构成n-gram类型故障知识库。然后将提炼的故障知识库加载到操作***日常运行中的故障扫描模块中,作为发现操作***运行日志中扫描故障的依据以实现故障扫描修复。
参见图2,本实施例Linux操作***中基于知识库的故障扫描恢复***包括:
日志收集模块,收集操作***的日志;
故障扫描模块,针对收集到的日志与预先根据日志建立的关键词类型的故障知识库、n-gram类型的故障知识库进行扫描以识别故障;
故障修复程序模块,用于在识别出故障时针对故障进行恢复。
本实施例Linux操作***中基于知识库的故障扫描恢复***基于收集的***日志建立故障知识库,以故障知识库中生成的条目为模型完成故障扫描定位以及修复,整个***包括日志收集模块、故障知识库***、故障扫描模块、故障修复模块。日志收集模块与故障扫描模块、故障知识库***相连,***日志模块从操作***收集内核日志、服务日志,一方面发送日志信息给故障知识库***建立相关故障知识条目,另一方面将内核日志、服务日志中相关信息发送给故障扫描模块,作为故障扫描的输入。
日志收集模块主要用于初始化日志收集配置文件,控制日志收集范围。日志收集配置文件中有“kernel”、”units”这两个日志配置参数,其中“kernel”参数的数值为布尔型,代表是否开启内核日志的收集,“units”的数值为字符串数组类型,代表操作***中的***服务单元(unit)的名称,从/usr/lib/systemd/system、/run/systemd/system和/etc/systemd/system文件中可以获取整个***的units信息。考虑到运行效率,本实施例中关注的只有部分***服务单元,前文已经说明。
故障知识库***与日志收集模块、故障扫描模块、故障修复模块相连,包含故障知识库、故障知识库生成工具和故障知识库分发工具。故障知识库***的作用有两个方面:一是故障扫描模块工作时,向故障知识库***输入故障日志或者故障词时,***查询相关条目输出具体故障信息,二是故障修复模块工作时,向故障知识库***输入故障词时,***查询相关条目找出故障修复方法并提供给故障修复模块执行。故障知识库包含两个类型的故障知识条目:n-gram类型、故障关键词,它们的生成方式不同,都可以作为故障扫描的信息模型,但故障关键词只能作为故障修复的信息模型,来输出故障扫描或者故障修复模块需要的信息。故障知识库生成工具与日志收集模块、故障知识库相连,日志收集模块收集到的日志数据的一部分作为日志样本数据输入到故障知识库生成工具中,生成相关故障知识条目。故障知识库分发工具与故障知识库、故障扫描模块、故障修复模块相连,它的作用是提供故障知识库条目查询和导出的功能。
故障扫描模块与故障知识库***、日志收集模块、故障修复模块相连,故障扫描模块的作用是对日志收集模块收集到的日志数据进行故障扫描,然后将扫描到的故障信息记录并通知故障修复模块处理故障。故障信息中包含故障关键词、故障原始日志数据、故障扫描使用的条目类型(故障关键词或者n-gram)。故障扫描模块对故障进行扫描的依据来源于故障知识库***,故障扫描运行时会加载故障知识库***中的故障知识条目,进行查询处理,处理结果即为故障信息。
故障修复模块与故障扫描模块、故障知识库***相连,故障修复模块接收到故障扫描模块记录下来的故障信息,从故障信息中获取故障关键词,使用故障关键词作为输入调用故障知识库分发工具获取故障知识库条目,并从该条目中读取故障修复脚本并修复。修复成功后将产生的修改数据写入到操作***的根文件***中,修复失败则丢弃掉故障修复过程中产生的数据。
如图3,本实施例Linux操作***中基于知识库的故障扫描恢复***的实现方法如下:
第一步,构建Linux操作***中基于知识库的故障扫描恢复***,该故障扫描恢复***以***服务的方式运行在操作***中,随操作***的启动开始进行***故障的扫描及修复,以***软件包的形式发布到软件应用仓库中。基于知识库的故障扫描恢复***如图2所示,由日志收集模块、故障知识库***、故障扫描模块、故障修复模块组成。
第二步,初始化加载基于知识库的故障扫描恢复***,方法是:
日志收集模块初始化。调用systemd-journald日志管理接口获取日志收集器对象,读取***日志收集模块的日志配置文件,获取“kernel”和“units”参数,使用读取的参数初始化systemd-journald日志收集器对象。
故障知识库***初始化。操作***使用包管理工具(如apt)安装故障知识库软件包,向操作***中添加故障知识库***中故障知识条目和故障知识库的生成以及分发工具。
故障扫描模块初始化。使用故障知识库分发工具的查询接口查询故障知识库条目信息,然后使用导出接口导出故障知识库条目,加载故障知识库条目生成故障扫描模型;故障扫描模型的生成方法是将故障知识库中故障知识条目读取并生成一个数据结构,结构体的成员就是故障知识条目中包含的域信息;最后建立与日志扫描模块的日志数据接收通道。
故障修复模块初始化。初始化故障扫描修复***中的故障状态标志(needrepair=n,repairstatus=none),建立与故障扫描模块的故障信息接收通道;初始化故障修复数据回滚、写入接口。
第三步,操作***执行***日志收集操作。
工作状态下,日志收集模块调用systemd-journald的日志管理接口,申请一个systemd-journald日志收集器对象,使用日志收集配置文件中的“kernel”和”units”参数实例化的systemd-journald日志收集器对象;日志收集器过滤并收集由systemd-journald管理的***日志数据,过滤方法为使用“kernel”和“units”参数对日志数据进行匹配过滤,收集的日志数据包含日志时间戳,日志的原始数据,日志的来源(“Identifies”字段),日志发生时的鼠标坐标值这些信息,这些信息以json格式转交故障扫描模块和故障知识库***。
第四步,构建故障知识库,生成故障知识库中的条目内容。
故障知识库中包含关键词类型故障知识条目和n-gram类型故障知识条目,n-gram类型、关键词类型的故障知识库条目的生成流程如下:
故障知识库中包含关键词类型故障知识条目和n-gram类型故障知识条目,其中故障关键词类型故障知识条目包含N个表项,每个表项包含6个域,分别为故障类型、故障关键词,故障帮助信息、故障修复方案、故障优先级、故障修复过程中是否需要重启;故障类型指的是***故障的分类,分类方法可以按照操作***的功能模块分类:网络故障、内核故障、文件***故障、***服务故障;故障关键词是能够标志故障的词语,故障关键词是从***故障日志中提取的,日志扫描模块在扫描日志时可以用这个故障关键词去匹配日志数据项,数据项中包含这个关键词可以确定发现了***故障,在故障修复时可以用于匹配包含相同故障关键词的故障修复的方案;故障帮助信息是可以向操作用户展示的故障信息,故障帮助信息内容是介绍故障的原因、故障的影响范围、故障的修复方法简略,故障信息的作用是帮助操作***用户在出现***故障时对操作***的使用;故障修复方案包含故障的修复脚本,故障修复模块在运行过程中会尝试运行故障修复方案中故障修复脚本;故障优先级在***存在多个故障时,故障修复模块会根据故障优先级去运行故障修复方案;故障修复过程中是否需要重启值的时故障修复模块尝试故障修复方案过程中是否有重启操作,它的作用是故障修复过程中需要重启的情况下提前通知用户。
n-gram类型故障知识条目包含N个表项,每个表项有6个域,分别为“Identifiers”字段、日志模板、日志模板参数、日志键值的概率数据集、历史日志键值长度参数n、概率范围阈值参数g。
故障扫描过程中使用日志的“Identifiers”字段区分***日志的来源,因此将这个字段放在n-gram类型故障知识库条目的表项中,用于区分日志收集模块收集到的日志是否支持用n-gram类型的故障知识条目去做故障扫描;
日志模板、日志模板参数都是通过故障知识库***中故障知识库生成工具生成,故障知识库生成工具中包含***日志数据解析接口,日志数据解析接口的输入为***日志样本数据,输出为解析出来的日志模板、日志模板参数基于日志键值序列,例如:
“10.251.194.213:50010Served block blk_-7724713468912166542to/10.251.203.80”--->“E1,<*>:<*>Served block blk_<*>to/<*>,[7724713468912166542,10.251.203.80]”
日志模板序列的概率数据集是通过故障知识库生成工具的n-gram算法接口生成,n-gram算法接口的输入为日志键值序列、历史日志键值长度以及概率范围阈值g,输出则是日志模板序列的概率数据集。
故障知识库生成工具生成故障n-gram类型的故障知识条目的步骤包括:
步骤1、故障知识库***从***日志模块接收日志数据,根据日志样本数据中的“Identifies”字段提取日志样本中某个软件的日志数据,包括正常运行日志和故障日志;进行日志解析将提取的日志模板数据变处理成日志模板,日志模板参数,日志解析接口使用目前准确率相对较高的Drain算法来实现这个功能,Drain算法的原理时是将日志样本数据中每条原始日志使用树型结构组织起来,原始日志为这个树型结构的叶子节点;组织过程中通过保证该树结构的每个叶子节点都是不一样的来实现提取日志模块以及日志模板参数,方法是原始日志条目在加入到树的叶子节点上之前必须扫描并对比整个树的叶子,在确保没有相同或者相似的叶子的存在的情况下加入树的新的叶子节点,具体过程参见Drain算法的论文介绍,但是该过程的正确率并非100%,所以需要手动排除解析错误的日志模块,这是个逐步优化的过程。
步骤2、使用n-gram算法处理生成的日志模板以及日志模板参数,n-gram算法是自然语言处理(简称NLP)中一个非常重要的概念,有时也称n元模型算法,通常在NLP中,人们基于一定的语料库,可以利用n-gram来预计或者评估一个句子是否合理。把日志收集模块收集到的日志处理成日志键值序列,这个日志键值序列可以当成类似NLP中的语料库,然后通过n-gram来预计接下来出现的日志是否合理,这样就达到了***故障扫描的目的。n-gram算法的计算公式为:
p(Mt|Mt-n,...,Mt-1)=count(Mt-n,...,Mt)/count(Mt-n,...,Mt-1)
上式中,p(Mt|Mt-n,...,Mt-1)表示前n个日志事件已经发生的前提下Mt日志事件发生的概率,Mt表示当前日志事件,Mt-1~Mt-n分别表示_和Mt相关的已经发生的日志事件序列,count表示事件序列依次发生的次数。n即为n-gram算法的参数n。多个日志键值序列使用这个计算公式计算处理的就是一个预测性的日志键值序列概率集合,我们把它称为日志键值概率数据集;
步骤3、将前述中产生的”Identifiers”字段、日志模板、日志模板参数、日志键值的概率数据集信息输入给故障知识库生成工具,输出n-gram类型的故障知识条目,实现方法是将这些数据转换成xml格式数据,然后存储到xml文件中。
使用故障知识库生成工具生成故障关键词类型的故障知识条目的步骤包括:
步骤1、从日志样本数据中提取包含故障信息的日志数据,提取方法为下述两种方式中的一种:一种方式是在实际发生故障时通过手动过滤、分析的方式获取故障日志数据,另外一种方式是使用扫描出的故障信息,将该故障信息中的故障原始日志数据作为故障日志数据;
步骤2、手工从故障日志数据分析出能够体现该故障的关键词信息,并根据故障的情况整理故障帮助信息、故障修复脚本、故障优先级信息、修复过程中是否需要重启数据,整理方法是从手工解决故障问题的过程、修复方法记录下来中整理;
步骤3、将得到的数据作为故障知识库生成工具中的知识条目生成接口的输入,输出故障关键词类型的故障知识条目。
第五步,故障扫描模块扫描***日志收集模块收集到的日志数据,得到被扫描的日志数据是否存在***故障的判断结果,以下是扫描的流程:
故障扫描模块和故障修复模块初始化时,初始化扫描修复配置文件中的故障状态标志(needrepair=n,repairstatus=none),说明此时不需要进行修复。
故障扫描模块进行故障扫描的工作流程为:
步骤1、接收日志收集模块发送的日志数据,提取日志数据中的“Identifiers”字段信息,使用故障知识库***的分发工具的查询接口向故障知识库查询这个“Identifiers”字段信息是否包含在n-gram类型故障知识条目中,查询到包含的情况下将这条日志数据发送故障扫描模块进行n-gram类型的故障扫描,转3,查询到不包含的情况下进行关键词类型的故障扫描,转步骤2。
步骤2、输入日志数据的故障关键词,遍历故障知识库中的故障知识条目并提取故障关键词,逐个与输入的故障关键词匹配,匹配成功代表发现故障,将该日志项发生给故障修复模块,转步骤6;
步骤3、输入日志数据,提取故障知识库中的故障知识条目,使用故障知识条目中包含的日志模板进行正则匹配,匹配成功则将该日志模板的日志键值记录在故障扫描模块的历史日志模板日志键值序列中,使用故障扫描模块的预测概率队列判断这个日志键值的发送是否在概率范围内,在概率范围内转步骤4,不在概率范围内转步骤6;
步骤4、提取故障知识库中的概率计算参数n和g,参数历史日志键值n代表n-gram中的n,即假设日志事件的发生只与前n个日志事件有关,n个日志事件的日志键值数组输入到步骤1中提到的故障知识库分发工具的查询接口中,查询接口使用传入的日志键值数组匹配n-gram类型的故障知识库条目中的日志键值的概率数据集,输出日志事件概率数组(概率值从大到小进行排序),概率数组使用概率范围阈值g来截取概率数组中的前g个被当成正常的日志事件发生的概率,如果真实出现日志事件的概率不在这前g个中代表故障扫描发现***故障,否则代表***运行正常;
步骤5、取步骤3中更新的历史日志模板的最近n个日志模板键值序列,将该键值序列以及参数g作为n-gram类型扫描模型的输入,输出下一个日志事件(使用日志键值标识)发生的概率队列,并更新日志扫描模块中的预测概率队列,需要注意的是该概率数组的长度不会大于g,某些情况下应该一会小于g,在小于g的情况下,该概率数组中的值的和为1,转1重新扫描;
步骤6、记录扫描出来的故障信息故障关键词、故障原始日志数据、故障扫描使用的模型类型(故障关键词或者n-gram),并设置扫描修复***中的故障状态标志(needrepair=y)。
步骤7、通知故障修复模块进行故障修复工作。
第六步,故障修复模块只能修复关键词类型扫描出来的故障,内核故障,网络故障,文件***故障、***服务故障都在故障修复模块的修复范围内,故障修复的流程为:
步骤1、提取故障扫描模块记录下来的故障信息中的故障关键词,通过故障关键词查找故障知识库中的故障知识条目;
步骤2获取步骤1的故障知识条目的修复方案,有多个修复方案的情况下使用故障知识条目的故障优先级进行排序,尝试执行这些故障修复方案中的操作;
步骤3、测试修复方案的修复结果,若修复成功,转步骤4;若修复失败转步骤5;
步骤4、将故障修复过程中产生的故障修复数据通过故障修复模块中的故障修复数据写入接口写入操作***的根文件***中,转步骤7;
步骤5、通过故障关键词继续查找其他故障修复方案,查找成功转步骤1,查找失败转步骤6;
步骤6、使用故障修复模块中的故障修复数据回滚接口丢弃掉故障修复过程中产生的故障修复数据;
步骤7、设置故障修复状态(repairstatus=success/failed,通知修复结果,结束。
本实施例Linux操作***中基于知识库的故障扫描恢复方法可应用于国产Linux操作***及各种国产芯片(如龙芯)中,很大程度上简化用户在使用Linux操作***出现故障时的操作,保证***运行的稳定性和可靠性的同时提升用户体验。本实施例方法使用故障知识库中的故障知识条目生成的故障扫描模型对日志进行智能扫描,使***故障的定位变得更加的方便、快速、准确;并且根据故障知识库条目中的故障修复发难进行修复,具有广泛化问题覆盖、智能化定位、自动化修复周期短等特点。故障扫描使用systemd-journald日志收集器收集***运行的关键日志,将这些日志作为扫描***运行故障的数据源;利用故障关键词或者n-gram算法计算出的概率数据发现并定位故障;故障修复利用知识库修复模块中对已知各种故障的修复脚本的调用来实现的,修复脚本会串联起一系列的基本修复操作,它实际上和数据库技术有相通之处。本实施例针对Linux操作***故障极难精确定位、***故障修复周期长、技术要求高、成本高的问题,本实施例能够自动发现Linux***中运行的故障扫描,减少现有的人工分析故障以及修复故障的介入,缩短故障的发现到故障的修复的周期,还可进一步根据故障问题通过自动化的故障修复提高***可用性、并降低***维护成本。
此外,本实施例还提供一种Linux操作***中基于知识库的故障扫描恢复***,包括计算机设备,该计算机设备中至少包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行前述Linux操作***中基于知识库的故障扫描恢复方法的步骤;或者该存储器中存储有被编程或配置以执行前述Linux操作***中基于知识库的故障扫描恢复方法的计算机程序。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行前述Linux操作***中基于知识库的故障扫描恢复方法的计算机程序。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种Linux操作***中基于知识库的故障扫描恢复方法,其特征在于,包括:
1)收集操作***的日志;
2)针对收集到的日志与预先根据日志建立的关键词类型的故障知识库、n-gram类型的故障知识库进行扫描以识别故障;
3)若识别出故障则针对故障进行恢复。
2.根据权利要求1所述的Linux操作***中基于知识库的故障扫描恢复方法,其特征在于,步骤1)中收集操作***的日志包括操作***中指定的***服务单元的日志,所述***服务单元是指Linux操作***中路径及名称为/usr/lib/systemd/system、/run/systemd/system和/etc/systemd/system三个文件包含***服务单元的全部或部分。
3.根据权利要求1所述的Linux操作***中基于知识库的故障扫描恢复方法,其特征在于,步骤1)中***服务单元是指Linux操作***中路径及名称为/usr/lib/systemd/system、/run/systemd/system和/etc/systemd/system三个文件包含的下述***服务单元:***服务单元,用于定义***服务;级别模拟单元,用于模拟实现“运行级别”;设备单元,用于定义内核识别的设备;挂载点单元,用于定义文件***挂载点;套接字单元,用于标识进程间通信的套接字文件;快照单元,用于管理***快照;交换单元,用于标识交换设备;自动挂载单元,用于文件***自动点设备;路径单元,用于定义文件***中的文件或目录。
4.根据权利要求1所述的Linux操作***中基于知识库的故障扫描恢复方法,其特征在于,步骤2)中关键词类型的故障知识库包括基于操作***的日志构建的关键词类型故障知识条目,所述关键词类型故障知识条目包含多个表项,每个表项包含6个域,分别为故障类型、故障关键词,故障帮助信息、故障修复方案、故障优先级、故障修复过程中是否需要重启;步骤2)之前还包括构建关键词类型故障知识条目的步骤包括:
S1A)从日志样本数据中提取包含故障信息的日志数据,提取方法为下述两种方式中的一种:一种方式是在实际发生故障时通过手动过滤、分析的方式获取包含故障信息的日志数据;另外一种方式是使用扫描出的故障信息,将该故障信息中的故障原始日志数据作为包含故障信息的日志数据;
S2A)针对每一种故障:从包含故障信息的日志数据中确定该故障的故障关键词,并确定故障类型、故障帮助信息、故障修复方案、故障优先级、故障修复过程中是否需要重启;
S3A)针对每一种故障:根据其对应的故障类型、故障关键词,故障帮助信息、故障修复方案、故障优先级、故障修复过程中是否需要重启生成对应的关键词类型故障知识条目。
5.根据权利要求4所述的Linux操作***中基于知识库的故障扫描恢复方法,其特征在于,步骤2)中关键词类型的故障知识库包括基于操作***的日志构建的故障n-gram类型知识条目,所述故障n-gram类型知识条目包含多个表项,每个表项包含6个域,分别为“Identifiers”字段、日志模板、日志模板参数、日志键值的概率数据集、历史日志键值长度参数n、概率范围阈值参数g,其中“Identifiers”字段用于记录***日志的来源,以确定是否支持用n-gram类型故障知识条目进行故障扫描,日志模板为日志数据的固定模板,日志模板参数为日志数据的变化内容,日志键值的概率数据集为n-gram算法接口生成的结果,历史日志键值长度参数n为n-gram算法输入,概率范围阈值参数g为n-gram算法输入,n-gram算法的输入为日志键值序列、历史日志键值长度参数n以及概率范围阈值参数g,输出为日志模板序列的概率数据集;步骤2)之前还包括构建故障n-gram类型知识条目的步骤包括:
S1B)根据日志样本数据中的“Identifiers”字段提取日志样本中某个软件的日志数据,包括正常运行日志和故障日志;
S2B)进行日志解析将提取的日志数据变处理成日志模板、日志模板参数:首先采用Drain算法将日志样本数据中每条原始日志使用树型结构组织起来,原始日志为这个树型结构的叶子节点,原始日志条目在加入到树的叶子节点上之前必须扫描并对比整个树的叶子,在确保没有相同或者相似的叶子的存在的情况下加入树的新的叶子节点,从而通过保证该树结构的每个叶子节点都是不一样的来实现提取日志模块以及日志模板参数,提取的日志模板为单条日志记录的正则表达式;然后手动排除解析错误的日志模块,完成错误的日志模板的剔除;
S3B)将日志样本数据处理成日志键值序列,这个日志键值序列可以当成类似NLP中的语料库,然后通过n-gram算法对日志键值序列中的日志键值的出现顺序进行记录和统计,使用这个统计结果为输入算出日志键序列中每大于0的第n个日志键后第n+1个日志键值出现的概率,并确定对应的概率范围阈值参数g,这些概率数据汇聚在一起形成日志键值概率数据集;
S4B)针对每一个日志键值,将其对应的将“Identifiers”字段、日志模板、日志模板参数、日志键值的概率数据集、历史日志键值长度参数n、概率范围阈值参数g创建一项故障n-gram类型知识条目,最终完成构建故障n-gram类型知识条目的创建。
6.根据权利要求5所述的Linux操作***中基于知识库的故障扫描恢复方法,其特征在于,步骤2)的步骤包括:
2.1)提取待处理日志数据中的“Identifiers”字段信息,查询这个“Identifiers”字段信息是否包含在n-gram类型故障知识条目中,若查询成功则跳转执行步骤2.3)以进行n-gram类型的故障扫描,否则跳转执行步骤2.2)以进行关键词类型的故障扫描;
2.2)确定待处理日志数据的故障关键词,遍历故障知识库中的关键词类型故障知识条目并提取故障关键词,将提取得到的故障关键词逐个与待处理日志数据的故障关键词进行匹配,若匹配成功则判定发现故障并跳转执行步骤2.5),否则,结束并退出;
2.3)针对待处理日志数据,将其使用故障n-gram类型知识条目中的日志模板,日志模板数据为单条日志记录的正则表达式,使用该正则表达式对单条日志数据进行正则匹配,输出匹配成功的日志模板对应的日志键值LogKey;
2.4)提取匹配的故障n-gram类型知识条目中的历史日志键值长度参数n、概率范围阈值参数g,在历史日志键值队列中取出后n个日志键值,将该日志键值队列作为输入来查询故障n-gram类型知识条目中日志键值的概率数据集,输出概率值从大到小进行排序的前g个日志键值概率数组,数组中单项的值中包含日志键值和对应的概率,判断生成的日志键值LogKey是否存在与这个概率数组中,不存在代表故障扫描发现***故障,转步骤2.5),否则代表***运行正常,结束并退出;
2.5)记录扫描出来的故障信息故障关键词、故障原始日志数据、故障扫描使用的模型类型,并设置扫描修复***中的故障状态标志;
2.6)若有得到日志键值LogKey,则将日志键值LogKey添加到历史日志键值队列中,跳转执行步骤3)。
7.根据权利要求1所述的Linux操作***中基于知识库的故障扫描恢复方法,其特征在于,步骤3)的步骤包括:
3.1)提取记录下来的故障信息中的故障关键词,通过故障关键词查找故障知识库中的故障知识条目;
3.2)获取故障知识条目的修复方案,有多个修复方案的情况下使用故障知识条目的故障优先级进行排序,尝试执行这些故障修复方案中的操作;
3.3)测试修复方案的修复结果,若修复成功,则跳转执行步骤3.4);若修复失败,则跳转执行步骤3.5);
3.4)将故障修复过程中产生的故障修复数据通过故障修复数据写入接口写入操作***的根文件***中,则跳转执行步骤3.7);
3.5)通过故障关键词继续查找其他故障修复方案,若查找成功,则跳转执行步骤3.1),若查找失败,则跳转执行步骤3.6);
3.6)使用故障修复数据回滚接口丢弃掉故障修复过程中产生的故障修复数据;
3.7)设置故障修复状态,通知修复结果,结束。
8.一种Linux操作***中基于知识库的故障扫描恢复***,其特征在于,包括:
日志收集模块,收集操作***的日志;
故障扫描模块,针对收集到的日志与预先根据日志建立的关键词类型的故障知识库、n-gram类型的故障知识库进行扫描以识别故障;
故障修复程序模块,用于在识别出故障时针对故障进行恢复。
9.一种Linux操作***中基于知识库的故障扫描恢复***,包括计算机设备,该计算机设备中至少包括相互连接的微处理器和存储器,其特征在于,所述微处理器被编程或配置以执行权利要求1~7中任意一项所述Linux操作***中基于知识库的故障扫描恢复方法的步骤;或者该存储器中存储有被编程或配置以执行权利要求1~7中任意一项所述Linux操作***中基于知识库的故障扫描恢复方法的计算机程序。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有被编程或配置以执行权利要求1~7中任意一项所述Linux操作***中基于知识库的故障扫描恢复方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011019038.5A CN112068981B (zh) | 2020-09-24 | 2020-09-24 | Linux操作***中基于知识库的故障扫描恢复方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011019038.5A CN112068981B (zh) | 2020-09-24 | 2020-09-24 | Linux操作***中基于知识库的故障扫描恢复方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112068981A true CN112068981A (zh) | 2020-12-11 |
CN112068981B CN112068981B (zh) | 2022-06-21 |
Family
ID=73683402
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011019038.5A Active CN112068981B (zh) | 2020-09-24 | 2020-09-24 | Linux操作***中基于知识库的故障扫描恢复方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112068981B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114465875A (zh) * | 2022-04-12 | 2022-05-10 | 北京宝兰德软件股份有限公司 | 故障处理方法及装置 |
CN116644810A (zh) * | 2023-05-06 | 2023-08-25 | 国网冀北电力有限公司信息通信分公司 | 一种基于知识图谱实现的电网故障风险处置方法及装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007141025A (ja) * | 2005-11-21 | 2007-06-07 | Mitsubishi Electric Corp | ログ管理システム及びログ管理方法 |
CN101833497A (zh) * | 2010-03-30 | 2010-09-15 | 山东高效能服务器和存储研究院 | 一种基于专家***方法的计算机故障管理*** |
CN102982025A (zh) * | 2011-09-02 | 2013-03-20 | 北京百度网讯科技有限公司 | 一种搜索需求识别方法及装置 |
US20160378435A1 (en) * | 2015-06-25 | 2016-12-29 | Ca, Inc. | Automatic Discovery of Comparable Features Based on N-gram Analysis |
CN107562603A (zh) * | 2017-09-25 | 2018-01-09 | 郑州云海信息技术有限公司 | 一种基于linux的故障智能定位***及方法 |
US20180060748A1 (en) * | 2016-08-26 | 2018-03-01 | Nec Laboratories America, Inc. | Recommender system for heterogeneous log pattern editing operation |
CN109491819A (zh) * | 2018-11-01 | 2019-03-19 | 郑州云海信息技术有限公司 | 一种诊断服务器故障的方法和*** |
CN111459698A (zh) * | 2020-03-31 | 2020-07-28 | 国网电力科学研究院有限公司 | 一种数据库集群故障自愈方法及装置 |
CN111639497A (zh) * | 2020-05-27 | 2020-09-08 | 北京东方通科技股份有限公司 | 一种基于大数据机器学习的异常行为发现方法 |
-
2020
- 2020-09-24 CN CN202011019038.5A patent/CN112068981B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007141025A (ja) * | 2005-11-21 | 2007-06-07 | Mitsubishi Electric Corp | ログ管理システム及びログ管理方法 |
CN101833497A (zh) * | 2010-03-30 | 2010-09-15 | 山东高效能服务器和存储研究院 | 一种基于专家***方法的计算机故障管理*** |
CN102982025A (zh) * | 2011-09-02 | 2013-03-20 | 北京百度网讯科技有限公司 | 一种搜索需求识别方法及装置 |
US20160378435A1 (en) * | 2015-06-25 | 2016-12-29 | Ca, Inc. | Automatic Discovery of Comparable Features Based on N-gram Analysis |
US20180060748A1 (en) * | 2016-08-26 | 2018-03-01 | Nec Laboratories America, Inc. | Recommender system for heterogeneous log pattern editing operation |
CN107562603A (zh) * | 2017-09-25 | 2018-01-09 | 郑州云海信息技术有限公司 | 一种基于linux的故障智能定位***及方法 |
CN109491819A (zh) * | 2018-11-01 | 2019-03-19 | 郑州云海信息技术有限公司 | 一种诊断服务器故障的方法和*** |
CN111459698A (zh) * | 2020-03-31 | 2020-07-28 | 国网电力科学研究院有限公司 | 一种数据库集群故障自愈方法及装置 |
CN111639497A (zh) * | 2020-05-27 | 2020-09-08 | 北京东方通科技股份有限公司 | 一种基于大数据机器学习的异常行为发现方法 |
Non-Patent Citations (2)
Title |
---|
HETONG DAI等: "Logram: Efficient Log Parsing Using n-Gram Dictionaries", 《IEEE TRANSACTIONS ON SOFTWARE ENGINEERING》 * |
贾统等: "基于日志数据的分布式软件***故障诊断综述", 《软件学报》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114465875A (zh) * | 2022-04-12 | 2022-05-10 | 北京宝兰德软件股份有限公司 | 故障处理方法及装置 |
CN114465875B (zh) * | 2022-04-12 | 2022-07-29 | 北京宝兰德软件股份有限公司 | 故障处理方法及装置 |
CN116644810A (zh) * | 2023-05-06 | 2023-08-25 | 国网冀北电力有限公司信息通信分公司 | 一种基于知识图谱实现的电网故障风险处置方法及装置 |
CN116644810B (zh) * | 2023-05-06 | 2024-04-05 | 国网冀北电力有限公司信息通信分公司 | 一种基于知识图谱实现的电网故障风险处置方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112068981B (zh) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109861844B (zh) | 一种基于日志的云服务问题细粒度智能溯源方法 | |
US8151248B1 (en) | Method and system for software defect management | |
US10621212B2 (en) | Language tag management on international data storage | |
US7870169B2 (en) | Method for enabling traceability and recovery from errors during migration of software applications | |
US20110321007A1 (en) | Targeting code sections for correcting computer program product defects using records of a defect tracking system | |
CN112068981B (zh) | Linux操作***中基于知识库的故障扫描恢复方法及*** | |
CN111258614B (zh) | 项目第三方库升级异常检测方法及***、设备及存储介质 | |
CN110990055B (zh) | 一种基于程序分析的Pull Request功能分类方法 | |
CN111177016B (zh) | 软件测试缺陷的管理方法 | |
Ostrand et al. | A Tool for Mining Defect-Tracking Systems to Predict Fault-Prone Files. | |
Tong et al. | An approach to pinpointing bug-induced failure in logs of open cloud platforms | |
CN110851293B (zh) | 一种信息***联动处理的***及方法 | |
JP5444071B2 (ja) | 障害情報収集システムと方法およびプログラム | |
Tong et al. | Can we use programmer's knowledge? fixing parameter configuration errors in hadoop through analyzing q&a sites | |
CN109992475A (zh) | 一种日志的处理方法、服务器及存储介质 | |
CN106293897B (zh) | 组件自动化调度*** | |
CN114937316B (zh) | 一种软件故障检测方法、装置、设备及介质 | |
US8949819B2 (en) | Rationalizing functions to identify re-usable services | |
CN114692595B (zh) | 一种基于文本匹配的重复冲突方案检测方法 | |
von Mayrhauser et al. | Experience with a reverse architecture approach to increase understanding | |
CN116910025A (zh) | 一种Oracle到openGauss的全量及增量数据校验方法 | |
CN117632742A (zh) | 解析并处理存储稳定性测试的方法及*** | |
CN113778758A (zh) | 一种数据恢复方法、装置、设备及可读存储介质 | |
CN118394646A (zh) | 一种日志分析方法及相关装置 | |
CN117076324A (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 |