基于问答网站知识的软件配置故障自动修复方法和系统的制作方法

文档序号:10471014阅读:227来源:国知局
基于问答网站知识的软件配置故障自动修复方法和系统的制作方法
【专利摘要】本发明公布了一种基于问答网站知识的软件配置故障自动检测与修复的方法和系统,包括在线阶段和离线阶段;离线阶段对问答网站数据进行爬取,得到问题网站中的问题和答案;记录问题和答案的对应关系,建立问题日志库;将提取得到的修复方法和指令存入修复指令仓库;在线阶段收集用户系统数据,包括用户系统运行日志和用户系统文件目录;通过计算用户系统运行日志和问题日志的相似度定位用户系统故障,通过搜索修复指令仓库得到相应修复指令,生成相应的故障修复脚本。本发明可实现对基于开源软件构建的云计算系统进行软件配置故障诊断与修复,提高云计算系统的可靠性和可用性。
【专利说明】
基于问答网站知识的软件配置故障自动修复方法和系统
技术领域
[0001] 本发明设及云计算技术,尤其设及一种基于问答网站知识的软件配置故障自动检 测与修复的方法和系统。
【背景技术】
[0002] 随着开放软件如化enStack、化doop、Spark等的广泛而迅速的使用W及其与日俱 增的复杂性,其软件配置与参数调整日益成为一项复杂且易出错的工作。软件配置引发的 故障频繁发生,成为影响包括基于化enStack的云计算系统、基于化doop的大数据平台等在 内的基于开放软件的分布式系统可用性、可靠性和性能的重要原因。更为严重的是,分布式 系统软件通常包括各种组件和程序模块,不论是同一程序模块内部的相互协作,还是不同 组件之间的相互协作,都需要详细的配置,大量配置参数W及运些配置参数之间的相互影 响和依赖关系更进一步地加大了软件配置的复杂性,使得软件配置故障难W避免、探测W 及修复。
[0003] 为快速定位及修复软件配置故障,现有的方法使用系统日志挖掘的手段对系统运 行状态进行跟踪、监测异常,并人工进行配置故障修复。日志是最直接表征系统运行状况的 信息,具有重要的价值。通常情况下,系统运维人员依靠人工查看系统运行日志,W期跟踪 系统状态W及定位系统故障。现有技术主要关注日志的收集、存储和基本挖掘,通过对庞大 的曰志集挖掘所获得的知识来对系统故障进行预测和诊断。对于软件配置所引发的故障, 现有技术手段主要通过在定位故障原因后人工查询相关配置文件,手动对配置文件中的错 误进行修复。
[0004] 一方面,云计算系统自身的特点使得日志信息极其丰富,且随着系统运行其规模 快速增加,即使借助自动化的故障识别工具,也无法避免在一定程度上需要系统和运行人 员通过人工查看海量的日志数据,并从中分析故障原因;另一方面,目前尚缺乏能够自动化 探测、修改错误配置参数的自动化软件配置故障的修复工具,借助运类工具,技术人员能够 快速定位软件配置故障并生成修复脚本。

【发明内容】

[0005] 为了克服上述现有技术的不足,本发明提供一种基于问答网站知识的软件配置故 障自动检测和修复方法与系统,利用问答网站中的信息如故障日志和解决方案,将分布式 系统软件运行状态与互联网知识建立关联,从而利用互联网知识检测到配置故障并修复。
[0006] 本发明提供的技术方案是:
[0007] -种基于问答网站知识的软件配置故障自动修复方法,包括在线阶段和离线阶 段;
[0008] 离线阶段对问答网站数据进行爬取,提取得到问题网站中的问题和答案;问题包 括问题日志数据,答案包括修复方法和指令;记录问题和答案的对应关系,建立问题日志 库;将提取得到的修复方法和指令存入修复指令仓库;
[0009] 在线阶段收集用户系统数据,用户系统数据包括用户系统运行日志和用户系统文 件目录;通过计算用户系统运行日志和问题日志的相似度,定位用户系统故障,通过捜索修 复指令仓库得到相应修复指令,生成相应的故障修复脚本;根据故障修复脚本实现修复用 户系统故障。
[0010] 针对上述基于问答网站知识的软件配置故障自动修复方法,进一步地,所述离线 阶段具体执行如下步骤:
[0011] 21)对问答网站数据进行爬取,提取得到问答网站中的问题和答案,具体是:首先 通过过滤问答网站数据得到与故障配置相关的可用问题页面,再从所述可用问题页面中提 取得到故障包含的问题日志数据和对应的答案数据;
[0012] 21a)每一个问题包括一条或多条问题日志信息,针对步骤21)得到的问题日志数 据进行过滤清洗,提取问题日志特征生成问题日志特征向量,获得问题与问题日志特征向 量的对应关系,将问题、问题日志特征向量和对应关系存储,生成问题日志库;
[0013] 21b)针对步骤21)得到的答案数据,通过文本分析提取答案数据中的指令和文件 操作,具体是:对答案数据进行切分,对切分成的每一部分进行归类并标注相应标签,所述 标签类型分别是:描述,文件路径,命令,配置,日志和代码;所述切分是使用解决方案和文 件路径作为分隔符,将答案数据划分为多个部分,每个部分被标注为上述标签类型中的一 种类型;由此将所述答案数据转换为标签的有序组合;
[0014] 21bl)针对步骤22)转换后得到的答案内容,设置Ξ种修复模式:第一种修复模式 为{:文件路径,配置};第二种修复模式为{:文件路径,配置,配置};第Ξ种修复模式为{命令, 配置};
[0015] 2化2)利用修复模式匹配算法将问题修复方法从答案数据中提取出来,每个答案 数据提取得到一个或多个问题修复方法;针对提取得到的问题修复方法设置操作类型;针 对提取出的每个问题修复方法确定相应的操作类型;由此,将每个答案数据转换成为由设 置操作类型的一个或多个问题修复方法组成的一个修复指令;将修复指令存入修复指令仓 库,供修复用户系统配置故障使用。
[0016] 针对上述基于问答网站知识的软件配置故障自动修复方法,进一步地,步骤21)所 述通过过滤问答网站数据得到与故障配置相关的可用问题页面,所述问答网站数据为爬虫 收集到的HTML页面;通过过滤具有W下特征的页面,得到与故障配置相关的可用问题页面: [0017] 2a巧回答的页面;
[0018] 2b)未含有解决方案的页面;解决方案指问题回答中的代码片段,包括程序代码、 可执行命令、文件路径配置文件内容,包括html文件中<codeX/code〉标签包含的内容;
[0019] 2c)未含有文件路径的页面;
[0020] 2d)未含有配置内容的页面,所述配置内容为xml格式。
[0021] 针对上述基于问答网站知识的软件配置故障自动修复方法,进一步地,步骤21a) 所述提取问题日志特征生成问题日志特征向量,具体通过基于文本挖掘的特征提取方法, 包括如下步骤:
[0022] 首先,针对每一条日志W标点符号为分隔符,分离出若干日志文本词汇.
[0023] 然后,删除所有标点符号,获取由若干词汇组成词汇序列;
[0024] 之后,将词汇大小写归一化生成问题日志文本特征向量,其形式表征为{wordi. word2,word3,…,wordn},其中,wordi(i = 1. .η)表征由标点符号作为分隔符的将整个日志 拆分成的一个字符串;
[0025] 最后,将日志数据和日志文本特征向量存储,生成问题日志库。
[0026] 针对上述基于问答网站知识的软件配置故障自动修复方法,进一步地,步骤2化2) 所述具体执行如下操作:
[0027] 首先,仿照情感词典建立操作词典,操作词典中收录了答案信息中的描述中出现 的各种修改操作词语作为关键词,并将运些关键词映射到上述的Ξ种修改类型,如果描述 中不存在关键词,则默认为增加操作;
[0028] 然后,对描述中的每个关键词的权重通过式1进行计算得到:
[0029] Wei 曲 UkeyW〇rd) = l/e"stance(keyword'FilePath)(式 i)
[0030] 式1中,keyword为关键词;FilePath为问题页面包含的相关答案中的标注为文件 路径的部分内容;dis化nee化eyword,File化th)为标注为描述部分的关键词到标注为文件 路径内容的文本距离;wei曲Ukeyword)为关键词keyword的权重。
[0031] 之后,根据计算出的各个关键词的权重,利用式2投票的方式得到修复类型:
[0032] wei 曲 t(OperationTypei) = Swei 曲 t 化eywordj)试 2)
[0033] OperationTypeiE {add,delete,update}(式3)
[0034] 式2~3中,keyword为关键词;OperationType为操作类型,add为增加操作,delete 为删除操作,update为更新操作;wei曲t (化erationTypei)为相应操作类型的权重,该权重 的值表示当前问题页面中相关答案的含义建议提问者使用该操作类型的可能性;keywordj 为映射到该修复操作的关键词;
[0035] 最后,取权重最大的作为修复操作中的操作类型,由此生成一个修复操作,表示为 式5:
[0036] 0peratiom= (OperationType ,RecoveryFilePath,ConfContent} 试 5)
[0037] 所述一个修复操作由Ξ项信息组成,分别为操作类型、提取修复模式识别算法生 成的修复方法中的文件路径、配置;
[0038] 最终,一系列修复操作组成修复指令,所述修复指令用式4表示:
[0039] EditScript={0peratiom,Operation,-...Operationn} 试 4)
[0040] 式4~式5中,EditScript为修复指令;Operation为修复操作;OperationType为操 作类型;RecoveryFilePath为需修复的文件的文件路径;ConfContent为配置内容;
[0041] 将修复指令存入修复指令仓库,作为提取的原始指令信息。
[0042] 针对上述基于问答网站知识的软件配置故障自动修复方法,进一步地,所述在线 阶段具体执行如下步骤:
[0043] 11)当有用户系统日志输入时,获取用户系统文件目录信息和用户系统运行日志, 分别转换为目录特定格式和系统日志特定格式;
[0044] 12)对用户系统运行日志进行预处理,提取得到用户系统日志的特征向量;
[0045] 13)当系统出现故障或者用户提交故障片段日志时,通过查询所述问题日志库索 引获取问答网站日志数据和问题日志文本特征向量,通过计算得到用户日志与问答网站问 题日志之间的相似度,通过相似度匹配的方法定位用户系统的配置故障,获得用户故障定 位信息;
[0046] 14)根据用户故障定位信息,从所述修复指令仓库中提取得到修复该故障的修复 指令,所述修复指令中的动态部分是从用户的系统文件目录信息提取得到的文件路径;
[0047] 15)根据步骤14)得到的修复指令包含的待修复配置文件,查找得到用户系统中相 应的配置文件,生成修复脚本,所述修复脚本是能够对用户系统中的配置文件进行修改的 可执行脚本;
[004引16)运行修复脚本,修复软件配置故障。
[0049] 针对上述基于问答网站知识的软件配置故障自动修复方法,进一步地,步骤11)所 述系统日志特定格式包括五个属性,分别为:用户ID、日志ID、日志内容、日志时间戳、日志 文件路径;所述用户ID用于表示日志所属用户;日志ID表示日志序列,用W建立索引,查询 等;日志时间戳记录当前日志的系统时间,用W表征用户日志集的时间序列特征;日志文件 路径保存当前日志来源;所述目录特定格式包括Ξ个属性,分别为:目录ID、上级目录、当前 目录;所述目录ID用于标识每个目录;上级目录表示该目录的上级目录名称;当前目录为当 前目录名称。
[0050] 针对上述基于问答网站知识的软件配置故障自动修复方法,进一步地,步骤13)所 述用户日志与问答网站问题日志之间的相似度,具体为采用相似度匹配方法计算得到的用 户日志与问答网站日志之间的编辑距离;所述编辑距离为两文本之间相互转换的最小编辑 操作数目;所述编辑操作类型分为:增加、删除、替换;所述相似度匹配方法通过比对用户系 统日志与问答网站日志库中的编辑距离,将日志片段定位到一个或多个问答网站中的问 题,由此得到用户故障定位信息。
[0051] 针对上述基于问答网站知识的软件配置故障自动修复方法,进一步地,步骤15)所 述查找得到用户系统中相应的配置文件,具体执行如下操作:
[0052] 首先,定义文件名的相似度函数31111113^^161,^162),该相似度函数^一个范 围为0到1的数字表示filel和file2文件名的相似度;
[0053] 然后,将用户目录结构数据W树结构存储,从根目录开始逐层遍历每层的所有文 件名,每次遍历都选出与所述修复指令中的文件名相似度最高的文件作为候选文件;
[0054] 如果当前目录下的候选文件相比上一层的候选文件更相似,则该文件为候选文 件,否则候选文件不变;
[0055] 最后,遍历到无下级目录时停止,将此时的候选文件作为需要修复的文件。
[0056] 针对上述基于问答网站知识的软件配置故障自动修复方法,进一步地,步骤15)所 述根据修复指令包含的待修复配置文件查找得到用户系统中相应的配置文件,生成问题修 复脚本,具体使用1 inux she 11语法生成所述修复脚本。
[0057] 本发明还提供基于问答网站知识的软件配置故障自动修复系统,如图2所示。该系 统W问答网站数据和用户系统数据作为输入,包含双线数据收集、在线日志分析与故障定 位、故障修复脚本生成等Ξ个模块:
[00曰引双线数据收集模块包括问答网站数据收集器和用户系统数据收集器两个子模块, 功能在于收集问答网站和用户系统日志的数据,为另两个模块提供数据支持。双线数据收 集模块的问答网站数据收集器会从问答网站上收集配置故障问题相关的日志数据及答案 数据,用户日志收集器从用户系统中收集用户日志数据,其中用户日志数据和问题的日志 数据会传递给在线日志分析与故障定位模块,答案数据会传递给故障修复脚本生成模块。
[0059] 在线日志分析与故障定位模块包括日志预处理器和用户故障日志定位器两个子 模块,功能在于对获取的日志数据进行预处理,并将用户故障匹配到一个或几个问答网站 的问题上。日志预处理器W问答网站的问题日志数据和用户系统日志数据作为输入,对日 志数据进行预处理。经过预处理后,用户故障日志定位器利用相似度匹配的方法,计算用户 日志和问答网站问题日志间的距离,将用户日志中的故障问题匹配到问答网站的问题,并 将结果传递给故障修复脚本生成模块。
[0060] 故障修复脚本生成模块包含修复指令提取器、修复指令仓库和修复脚本生成器子 模块,功能在于自动生成用于修复用户配置故障的脚本。修复指令提取器W问答网站答案 数据为输入,通过分析网站答案数据,将答案中的指令或文件操作提取出来,作为该问题的 解决方案。修复脚本生成器根据用户故障定位结果,提取相应问题的解决方案,并根据用户 系统文件目录,基于shell脚本语法,生成该问题的修复脚本。最后将脚本提供给用户用于 解决用户系统的软件配置故障。
[0061] 与现有技术相比,本发明的有益效果是:
[0062] 本发明提供一种基于问答网站知识的软件配置故障自动检测与修复方法与系统, 从问答网站中收集丰富的、来源于实际应用的软件配置故障的问题日志与相关答案等信 息,分析与挖掘日志信息进而对用户系统的软件配置故障进行识别和定位。再通过计算用 户系统日志与问答网站问题中包含的日志间的相似度,定位该配置故障,并从相对应的问 题答案中得到问题的解决方案,进而结合用户文件系统目录结构,生成修复脚本。整个过程 的实现为自动化处理,一方面充分利用问答网站所积累的丰富的配置故障类型及相关解决 方案等知识,通过知识挖掘,可W自动化定位系统故障,并找到相关问题描述,原因或解决 方案,简化系统运维人员通过阅读日志信息,手动定位配置错误的过程,极大节省运维人员 的寻找配置错误解决方法的时间和精力;另一方面,通过从问答网站知识中所获取的关于 软件配置错误的问题描述与答案中的解决方案,自动生成配置修复脚本,提高了故障修复 的效率和准确性。本发明可W实现对基于开源软件构建的云计算系统进行软件配置故障诊 断与修复,提高云计算系统的可靠性和可用性。
【附图说明】
[0063] 图1是本发明提供的基于问答网站知识的软件配置故障自动修复方法的流程框 图。
[0064] 图2是本发明实施例提供的基于问答网站知识的软件配置故障自动修复系统的结 构框图。
【具体实施方式】
[0065] 下面结合附图,通过实施例进一步描述本发明,但不W任何方式限制本发明的范 围。
[0066] 本发明提供一种基于问答网站知识的软件配置故障自动检测与修复方法与系统, 从问答网站中收集软件配置故障的问题日志与相关答案等信息,分析与挖掘日志,通过计 算用户系统运行日志与问答网站日志的相似度,对用户配置故障进行识别和定位,根据问 答网站对应问题的答案得到解决方案,并结合用户系统文件目录生成相应的故障修复脚 本,修复用户系统故障。
[0067] 图1是本发明提供的基于问答网站知识的软件配置故障自动检测与修复方法的流 程框图;图2是本发明实施例提供的基于问答网站知识的软件配置故障自动修复系统的结 构框图。
[0068] 实施例提供的基于问答网站知识的软件配置故障自动修复系统W问答网站数据 和用户系统数据作为输入,包括双线数据收集、在线日志分析与故障定位、故障修复脚本生 成等Ξ个模块。整个系统流程如下:
[0069] 系统流程分为在线和离线阶段:在线阶段主要是对用户系统数据进行收集和对用 户系统运行日志进行收集和处理;离线阶段主要是对问答网站数据进行爬取W及提取问题 答案中的修复方法和指令。
[0070] 在线阶段首先由运行日志收集器收集用户系统运行日志(也可W是用户提交的日 志片段),由静态系统信息收集器收集系统信息,主要是系统和应用文件路径和基本信息。 系统日志由日志预处理器进行清洗过滤和存储,当系统出现故障或者用户提交故障片段日 志,用户故障日志定位器会根据离线处理的数据结果识别故障日志并对故障进行定位。
[0071] 离线阶段首先由问答网站收集器分别收集问题日志和相关答案,然后对问题回答 部分进行分割并标注相应标签,根据修复模式进行识别并提取配置故障修复相关内容,最 终生成修复指令并存入修复指令仓库。对于问题日志部分需要进行过滤清洗和存储,同时 记录问题日志和问题答案的对应关系,建立问题日志库,W便在线过程通过计算用户系统 日志和问题日志的相似度,定位用户系统故障进而提取相关答案中的解决方案。
[0072] 修复脚本生成器是系统流程的最后一步,它负责整合在线和离线处理的所有数 据,包括用户故障日志,问题日志,同问题答案相对应的修复指令和用户系统静态数据信 息,主要是文件结构。修复脚本生成器根据用户故障定位器的定位结果(某一个或一些问题 页面),从修复指令仓库查找由运些问题页面中包含的答案提取出的修复指令,然后根据修 复指令包含的待修复配置文件查找用户系统中相同或相似配置文件,最终使用linux shel 1语法生成对用户系统中的某配置文件进行修改的可执行脚本。
[0073] 具体地,系统的流程如图1所示,包括如下步骤:
[0074] 首先,双线数据收集模块的问答网站数据收集器从问答网站中捜集问题日志数据 和答案数据。对于日志数据进行清洗、过滤和存储,之后传递给在线日志分析与故障定位模 块。对于答案数据,经简单清洗后传递给故障修复脚本生成模块。
[0075] 当有用户系统日志输入时,运行日志收集器对用户系统日志进行初步清洗、整理 和存储后,传递给日志预处理器提取特征向量。用户故障日志定位器计算用户日志与问答 网站日志间的相似度,根据相似度定位用户系统的配置故障,生成用户系统的配置文件路 径,将结果传递给故障修复脚本生成模块。故障修复模块根据用户故障定位信息从修复指 令仓库中提取修复该故障的修复指令,同时迭代匹配用户系统文件路径,最后修复脚本生 成器生成修复脚本,用户可直接运行修复脚本修复软件配置故障。
[0076] 本实施例提供的基于问答网站知识的软件配置故障自动修复系统中,各个模块的 操作通过与其他相关模块进行信息交互来完成,下面分别对不同的模块进行具体说明。
[0077] S1)双线数据收集模块
[0078] 双线数据收集模块主要功能是利用网络爬虫和网站开放API,抓取网站的html文 件或一定格式的数据(如json),并对网页信息进行清洗过滤提取其中的问题日志数据和答 案数据;与此同时,双线数据收集模块从用户系统中收集日志数据并对外提供接口供用户 上传或输入日志文本信息,同时也会收集静态的系统信息。最后,双线数据收集模块对日志 数据进行存储备份并传递给在线日志分析与故障定位模块,对答案数据进行提取存储并传 递给故障修复脚本生成模块。双线数据收集模块包括问答网站数据收集器和用户系统数据 收集器两个子模块:
[0079] S11)问答网站数据收集器
[0080] 问答网站数据收集器包括问答网站答案收集器和问答网站问题收集器,主要使用 网络爬虫技术或通过网站开放API对问答网站上的问题日志和答案数据进行抓取,清洗并 进行提取。网络爬虫技术通常包括页面下载,url抽取与持久化,html文件解析等。
[0081] 对于爬虫收集到的HTML页面,过滤具有W下特征的页面:
[0082] 2a)无回答的问题页面;
[0083] 2b)未含有解决方案的页面;解决方案指问题回答中的代码片段,包括程序代码、 可执行命令、文件路径配置文件内容等,通常是html文件中<code〉</code>标签包含的内 容;
[0084] 2c)未含有文件路径的页面;利用正则表达式对文件路径进行检索,典型的文件路 径包括多个7"符号,通常具有".xml"或".conf"文件扩展名;
[0085] 2d)未含有配置内容的回答;配置内容通常是xml格式的,使用正则表达式可W进 行识别;
[0086] 过滤完毕结果即故障配置相关的可用问题页面,从中提取得到故障包含的日志数 据和对应的答案数据。
[0087] 然后对问答网站的日志数据进行处理,提取日志特征。由于运些数据信息具有较 大的噪声,提取的日志具有异构性,不完整性等特点,因此,针对问答网站日志数据的特征 提取需尽可能过滤掉细节特征W降低噪声影响。本模块采用基于文本挖掘的特征提取方 法,主要关注日志信息的词汇序列。首先,针对每一条日志W标点符号(包括空格)为分隔 符,分离出若干日志文本词汇;之后,删除所有标点符号,获取由若干词汇组成词汇序列;最 后,将词汇大小写归一化生成最终日志文本特征向量,其形式表征为{wordi,words, words,…,word。},其中,wordi表征由标点符号作为分隔符,将整个日志拆分成的若干字符 串之一;最后将日志数据及其日志文本特征向量生成问题日志库,并传递给用户故障日志 定位器。
[0088] S12)用户系统数据收集器
[0089] 用户系统数据收集器包括运行日志收集器和静态系统信息收集器,主要功能是向 用户提供上传日志接口或在用户系统中加入探针,检测并抽取日志信息,然后转换为特定 格式,传递给在线日志分析与故障定位模块;此外还会扫描系统的文件目录,传递给故障修 股脚本生成模块。
[0090] 用户系统数据收集器对收集到的用户系统运行日志文本不做处理,仅添加若干字 段对日志进行表示,处理后的日志属性格式如表1所示的系统日志特定格式。系统日志特定 格式包括五个属性,分别为:用户ID、日志ID、日志内容、日志时间戳、日志文件路径;用户ID 用于表示日志所属用户;日志ID表示日志序列,用W建立索引,查询等;日志时间戳记录当 前日志的系统时间,用w表征用户日志集的时间序列特征;日志文件路径保存当前日志来 源,通常保存文件系统中的某一挂载点中的组件日志文件。
[0091] 表1用户日志处理完毕数据格式举例
[0092]
[0093] 用户系统数据收集器还会扫描用户系统的文件目录结构(静态系统信息),通过逐 层遍历所有文件夹,将文件目录保存为特定格式,目录特定格式包括Ξ个属性,分别为:目 录ID、上级目录、当前目录;格式如表2所示。目录ID用于标识每个目录;上级目录表示该目 录的上级目录名称;当前目录为当前目录名称。
[0094] 表2用户文件目录数据格式举例
[0095]
[0096] S2)在线日志分析与故障定位模块
' '
[0097] 在线日志分析与故障定位模块的主要功能是接收用户系统日志数据并进行过滤、 清洗和结构化存储,通过提取日志文本语义特征,利用相似度匹配等算法对软件配置故障 进行定位,并将结果传递给故障修复脚本生成模块。在线日志分析与故障定位模块包括日 志预处理器和用户故障日志定位器两个子模块:
[0098] S21)用户系统日志预处理器
[0099] 用户系统日志预处理器接收用户系统数据收集器收集得到的用户系统日志数据, 对运些日志数据进行预处理。对用户日志数据预处理的方法同问答网站日志数据预处理方 法相同,生成用户系统日志的文本特征向量,然后传递给用户故障日志定位器。
[0100] S22)用户故障日志定位器
[0101] 用户故障日志定位器接收预处理过的用户日志数据及其文本特征向量,同时查询 问题日志库索引获取问答网站日志数据及其文本特征向量。然后使用相似度匹配的方法, 通过计算用户日志与问答网站日志间的编辑距离,匹配出与用户日志相似的问题日志。所 谓编辑距离即两文本之间相互转换的最小编辑操作数目。编辑操作分为Ξ种类型:增加,删 除,替换,W字符为操作单位,兼顾文本内容与顺序特征。本模块的具体流程包括:逐一计算 用户日志的文本特征向量与问题日志库中所有问题日志的文本特征向量之间的编辑距离, 取距离最近的若干问题日志,通过问题日志与问答网站问题的对应关系(问题页面包含该 问题日志),得到若干相关的问题ID,传递给故障修复脚本生成模块。
[0102] S3)故障修复脚本生成模块
[0103] 故障修复脚本生成模块的主要功能是从问题答案中提取修复指令存入修复指令 仓库;根据用户故障定位得到的问题ID,从修复指令仓库中提取修复该问题的修复指令,生 成修复脚本输出给用户。故障修复脚本生成模块主要包含修复指令提取器、修复指令仓库 和修复脚本生成器子模块:
[0104] S31)修复指令提取器
[0105] 修复指令提取器接收从问答网站上收集到的答案数据,通过分析其中的文本,提 取答案中的指令和文件操作,对答案数据进行切分并对切分完毕的每一部分进行归类并标 注相应标签,标签有6种,分别是描述,文件路径,命令,配置,日志和代码。描述表示回答者 的自然语言描述;文件路径表示答案中出现的文件;命令表示答案中包含的可执行指令;配 置表示答案中的配置文件内容或配置信息;日志表示用于描述系统状态的控制台日志或系 统日志;代码表示应用程序代码。切分方法是使用解决方案化tml文件中<codeX/code〉标 签中内容)和文件路径作为分隔符,划分整体答案数据。划分完毕的答案数据包括若干部分 (包括解决方案和文件路径),其中每一部分可被标识为运6种标签之一。
[0106] 在运一阶段,首先提取解决方案部分化tml文件中<codeX/code〉标签中内容)和 文件路径部分,解决方案提取通过html文件处理,文件路径部分通过正则匹配文件路径格 式(包括7"分隔符W及.xml或.conf文件后缀)。如果切分的部分不是解决方案和文件路 径,将其标识为描述;然后,判断解决方案部分的类型。通常,解决方案中包含所有的与软件 或系统相关的内容,可能为命令,配置,日志和代码,每一种不同的数据类型都具备其相应 的数据格式,如配置内容通常是xml格式,日志数据通常具有时间戳,严重等级等。因此,通 过正则匹配的方法,将解决方案部分标注为运4类标签之一。
[0107] 根据问答网站数据收集器对网页的过滤情况,将答案中的信息根据其内容将其划 分为上述六种标签类型,答案数据被转换为运六种标签的有序组合。基于转换后的答案内 容,定义Ξ种修复模式:第一种修复模式为{:文件路径,配置};第二种修复模式为{文件路 径,配置,配置};第Ξ种修复模式为{命令,配置}(此处命令指文件操作相关的命令,例如 vi,nano等)。
[0108] 利用修复模式识别算法将特定的答案信息按照运Ξ种模式提取出来,得到了解决 该问题的修复方法。修复模式识别的具体方法的伪代码如下算法1所示:
[0109]
[0110] 然后,需要判定提取出的修复方法的修复类型,修复类型被定义为如下Ξ种,包括 增加操作类型、删除操作类型和更新操作类型:
[0111] 增加(add),在配置文件中增加一些配置内容。
[0112] 删除(delete),从配置文件中删除一些配置内容。
[0113] 更新(update),将配置文件中的内容替换为新的配置内容。
[0114] 判断对应的修复类型,需仿照情感词典建立操作词典,操作词典中收录了答案信 息中的描述里出现的各种修复操作词语(如add, r邱lace, delete, revise等)作为关键词, 并将运些关键词映射到上述的Ξ种修复类型,如果描述中不存在关键词,则默认为增加操 作,同时从修复方法中提取所包含的文件路径。然后对描述中的每个关键词的权重weight 化eyword)进行计算,权重函数与关键词到文件路径的距离有关,公式如下:
[0115] Wei 曲 UkeyW〇rd) = l/e"stance(keyword'FilePath)(式 i)
[0116] 式1中,keyword为关键词;Fi lePath为问题页面包含的相关答案中的标注为文件 路径的部分内容;dis化nee化eyword, File化th)为标注为描述部分的关键词到标注为文件 路径内容的文本距离;wei曲Ukeyword)为关键词keyword的权重。
[0117] 之后根据计算出的各个关键词的权重,利用投票的方式决定修复类型,公式如下:
[0118] weight(OperationTypei) = Swei 曲 t 化eywordj)试 2)
[0119] OperationTypeiE {add,deleee,update}(式3)
[0120] 式2~3中,keyword为关键词;OperationType为操作类型,add为增加操作,delete 为删除操作,update为更新操作;wei曲t (化erationTypei)为相应操作类型的权重,该权重 的值表示当前问题页面中相关答案的含义建议提问者使用该操作类型的可能性;keywordj 为映射到该修复操作的关键词。最后取权重最大的作为修复操作中的操作类型。运样,生成 Ξ项信息:,操作类型,提取修复模式识别算法生成的修复方法中的文件路径和配置。运Ξ 项信息组成一个修复操作(式5)。
[0121] 最终,运一系列修复操作组成修复指令,修复指令定义如下:
[0122] EditScript={Operatiom,Operation,-...Operationn} 试 4)
[0123] 0peratiom= (OperationType ,RecoveryFilePath,ConfContent} 试 5)
[0124] 其中,EditScript为修复指令;Operation为修复操作;OperationType为操作类 型;RecoveryFi lePath为需修复的文件的文件路径;Conf Content为配置内容。运些修复指 令作为提取的原始指令信息存入修复指令仓库。
[01巧]S32)修复脚本生成器
[0126] 修复脚本生成器会根据用户故障定位结果,从修复指令仓库中获取相应的修复指 令操作。用户系统和问答网站中人们讨论的问题系统存在差异,主要是修复指令中的待修 改配置文件路径不同,因此需要自动查找用户系统对应的配置文件路径,并替换原始指令 信息(修复指令仓库中的修复指令)中的文件路径。主要包括如下步骤:
[0127] 首先,定义文件名的相似度函数31111113八^161,^162),该函数^一个范围为0到 1的数字表示fi lei和fi le2文件名的相似度,数值越大表示相似度越高,反之相似度越低。
[0128] 然后,将用户目录结构数据W树结构存储,从根目录开始逐层遍历每层的所有文 件名,每次遍历计算运些文件名同修复指令中文件路径的文件名的相似度函数,取相似度 最高的文件作为候选文件。如果当前目录下的候选文件相比上一层的候选文件更相似,贝U 该文件为候选文件,否则候选文件不变。最后,遍历到无下级目录时停止,将此时的候选文 件作为需要修复的文件,具体用户系统文件定位方法的伪代码如下算法2所示:
[0129]
[0130] 根据得到的文件,结合修复指令,将其中的文件路径替换为用户系统的文件路径, 即可得到针对该问题的修复脚本。之后,基于得到的修复脚本,生成linux shell脚本自动 化修改配置文件内容。对于文件内容的增删改操作,使用sed指令进行处理;W向配置文件/ 01:。/11〇313增加配置内容''127.〇.〇.11〇。日化〇31:"为例(〇口6'日1:;[0]1={4(1(1,/61:。/11〇313, 127.0.0. llocalhost}),其修复指令为"sed-i'127.0.0. llocalhost"',最终生成的基本 shell脚本。如果修改特定位置的配置内容,只需要增加待修改行编号即可。通过生成符合 用户系统环境的配置故障修复脚本,帮助用户快速修复软件配置故障,节省修复时间,提高 系统的故障恢复能力和可用性。
[0131]需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技 术人员可W理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是 可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围W权利要求 书界定的范围为准。
【主权项】
1. 一种基于问答网站知识的软件配置故障自动修复方法,包括在线阶段和离线阶段; 离线阶段对问答网站数据进行爬取,提取得到问题网站中的问题和答案;问题包括问 题日志数据,答案包括修复方法和指令;记录问题和答案的对应关系,建立问题日志库;将 提取得到的修复方法和指令存入修复指令仓库; 在线阶段收集用户系统数据,用户系统数据包括用户系统运行日志和用户系统文件目 录;通过计算用户系统运行日志和问题日志的相似度,定位用户系统故障,通过搜索修复指 令仓库得到相应修复指令,生成相应的故障修复脚本;根据故障修复脚本实现修复用户系 统故障。2. 如权利要求1所述基于问答网站知识的软件配置故障自动修复方法,其特征是,所述 离线阶段具体执行如下步骤: 21)对问答网站数据进行爬取,提取得到问答网站中的问题和答案,具体是:首先通过 过滤问答网站数据得到与故障配置相关的可用问题页面,再从所述可用问题页面中提取得 到故障包含的问题日志数据和对应的答案数据; 21a)每一个问题包括一条或多条问题日志信息,针对步骤21)得到的问题日志数据进 行过滤清洗,提取问题日志特征生成问题日志特征向量,获得问题与问题日志特征向量的 对应关系,将问题、问题日志特征向量和对应关系存储,生成问题日志库; 21b)针对步骤21)得到的答案数据,通过文本分析提取答案数据中的指令和文件操作, 具体是:对答案数据进行切分,对切分成的每一部分进行归类并标注相应标签,所述标签类 型分别是:描述,文件路径,命令,配置,日志和代码;所述切分是使用解决方案和文件路径 作为分隔符,将答案数据划分为多个部分,每个部分被标注为上述标签类型中的一种类型; 由此将所述答案数据转换为标签的有序组合; 21bl)针对步骤22)转换后得到的答案内容,设置三种修复模式:第一种修复模式为{:文 件路径,配置};第二种修复模式为{:文件路径,配置,配置};第三种修复模式为{命令,配 置}; 21b2)利用修复模式匹配算法将问题修复方法从答案数据中提取出来,每个答案数据 提取得到一个或多个问题修复方法;针对提取得到的问题修复方法设置操作类型;针对提 取出的每个问题修复方法确定相应的操作类型;由此,将每个答案数据转换成为由设置操 作类型的一个或多个问题修复方法组成的一个修复指令;将修复指令存入修复指令仓库, 供修复用户系统配置故障使用。3. 如权利要求2所述基于问答网站知识的软件配置故障自动修复方法,其特征是,步骤 21)所述通过过滤问答网站数据得到与故障配置相关的可用问题页面,所述问答网站数据 为爬虫收集到的HTML页面;通过过滤具有以下特征的页面,得到与故障配置相关的可用问 题页面: 2a)无回答的页面; 2b)未含有解决方案的页面;解决方案指问题回答中的代码片段,包括程序代码、可执 行命令、文件路径配置文件内容,包括html文件中〈code>〈/code>标签包含的内容; 2c)未含有文件路径的页面; 2d)未含有配置内容的页面,所述配置内容为xml格式。4. 如权利要求2所述基于问答网站知识的软件配置故障自动修复方法,其特征是,步骤 21a)所述提取问题日志特征生成问题日志特征向量,具体通过基于文本挖掘的特征提取方 法,包括如下步骤: 首先,针对每一条日志以标点符号为分隔符,分离出若干日志文本词汇; 然后,删除所有标点符号,获取由若干词汇组成词汇序列; 之后,将词汇大小写归一化生成问题日志文本特征向量,其形式表征为{wordi,word2, word3,…,wordn},其中,wordi(i = l. .η)表征由标点符号作为分隔符的将整个日志拆分成 的一个字符串; 最后,将日志数据和日志文本特征向量存储,生成问题日志库。5. 如权利要求2所述基于问答网站知识的软件配置故障自动修复方法,其特征是,步骤 21b2)所述具体执行如下操作: 首先,仿照情感词典建立操作词典,操作词典中收录了答案信息中的描述中出现的各 种修改操作词语作为关键词,并将这些关键词映射到上述的三种修改类型,如果描述中不 存在关键词,则默认为增加操作; 然后,对描述中的每个关键词的权重通过式1进行计算得到: weight(keyword) = l/edistance(keywcird'FilePath)(式1)式1 中,keyword为关键词;FilePath 为问题页面包含的相关答案中的标注为文件路径的部分内容;distance (keyword, FilePath)为标注为描述部分的关键词到标注为文件路径内容的文本距离;weight (key word)为关键词key word的权重; 之后,根据计算出的各个关键词的权重,利用式2投票的方式得到修复类型: weight(OperationTypei) = Σweight(keywordj)(式2) OperationTypei£{add,delete,update}(式3) 式2~3中,keyword为关键词;OperationType为操作类型,add为增加操作,delete为删 除操作,update为更新操作;weight(OperationTypei)为相应操作类型的权重,该权重的值 表示当前问题页面中相关答案的含义建议提问者使用该操作类型的可能性;keywor山为映 射到该修复操作的关键词; 最后,取权重最大的作为修复操作中的操作类型,由此生成一个修复操作,表示为式5: Operatioru = {OperationType,RecoveryFilePath,ConfContent}(式5) 所述一个修复操作由三项信息组成,分别为操作类型、提取修复模式识别算法生成的 修复方法中的文件路径、配置; 最终,一系列修复操作组成修复指令,所述修复指令用式4表示: EditScript= {Operatiom,Operatiom,…,0perationn}(式4) 式4~式5中,EditScript为修复指令;Operation为修复操作;OperationType为操作类 型;RecoveryFi lePath为需修复的文件的文件路径;Conf Content为配置内容; 将修复指令存入修复指令仓库,作为提取的原始指令信息。6. 如权利要求1所述基于问答网站知识的软件配置故障自动修复方法,其特征是,所述 在线阶段具体执行如下步骤: 11) 当有用户系统日志输入时,获取用户系统文件目录信息和用户系统运行日志,分别 转换为目录特定格式和系统日志特定格式; 12) 对用户系统运行日志进行预处理,提取得到用户系统日志的特征向量; 13) 当系统出现故障或者用户提交故障片段日志时,通过查询所述问题日志库索引获 取问答网站日志数据和问题日志文本特征向量,通过计算得到用户日志与问答网站问题日 志之间的相似度,通过相似度匹配的方法定位用户系统的配置故障,获得用户故障定位信 息; 14) 根据用户故障定位信息,从所述修复指令仓库中提取得到修复该故障的修复指令, 所述修复指令中的动态部分是从用户的系统文件目录信息提取得到的文件路径; 15) 根据步骤14)得到的修复指令包含的待修复配置文件,查找得到用户系统中相应的 配置文件,生成修复脚本,所述修复脚本是能够对用户系统中的配置文件进行修改的可执 行脚本; 16) 运行修复脚本,修复软件配置故障。7. 如权利要求6所述基于问答网站知识的软件配置故障自动修复方法,其特征是,步骤 11)所述系统日志特定格式包括五个属性,分别为:用户ID、日志ID、日志内容、日志时间戳、 日志文件路径;所述用户ID用于表示日志所属用户;日志ID表示日志序列,用以建立索引, 查询等;日志时间戳记录当前日志的系统时间,用以表征用户日志集的时间序列特征;日志 文件路径保存当前日志来源;所述目录特定格式包括三个属性,分别为:目录ID、上级目录、 当前目录;所述目录ID用于标识每个目录;上级目录表示该目录的上级目录名称;当前目录 为当前目录名称。8. 如权利要求6所述基于问答网站知识的软件配置故障自动修复方法,其特征是,步骤 13)所述用户日志与问答网站问题日志之间的相似度,具体为采用相似度匹配方法计算得 到的用户日志与问答网站日志之间的编辑距离;所述编辑距离为两文本之间相互转换的最 小编辑操作数目;所述编辑操作类型分为:增加、删除、替换;所述相似度匹配方法通过比对 用户系统日志与问答网站日志库中的编辑距离,将日志片段定位到一个或多个问答网站中 的问题,由此得到用户故障定位信息。9. 如权利要求6所述基于问答网站知识的软件配置故障自动修复方法,其特征是,步骤 15)具体使用linux shell语法生成所述问题修复脚本;步骤15)所述查找得到用户系统中 相应的配置文件,具体执行如下操作: 首先,定义文件名的相似度函数similar(filel,file2),该相似度函数以一个范围为0 到1的数字表示filel和file2文件名的相似度; 然后,将用户目录结构数据以树结构存储,从根目录开始逐层遍历每层的所有文件名, 每次遍历都选出与所述修复指令中的文件名相似度最高的文件作为候选文件; 如果当前目录下的候选文件相比上一层的候选文件更相似,则该文件为候选文件,否 则候选文件不变; 最后,遍历到无下级目录时停止,将此时的候选文件作为需要修复的文件。10. 利用权利要求1~9所述基于问答网站知识的软件配置故障自动修复方法实现的基 于问答网站知识的软件配置故障自动修复系统,其特征是,所述软件配置故障自动修复系 统以问答网站数据和用户系统数据作为输入,包括双线数据收集模块、在线日志分析与故 障定位模块和故障修复脚本生成模块; 所述双线数据收集模块包括问答网站数据收集器和用户系统数据收集器两个子模块, 用于收集问答网站和用户系统日志的数据,为另两个模块提供数据支持;所述问答网站数 据收集器用于从问答网站上收集配置故障问题相关的日志数据及答案数据,所述用户日志 收集器用于从用户系统中收集用户日志数据;所述用户日志数据和问题的日志数据传递给 在线日志分析与故障定位模块,所述答案数据传递给故障修复脚本生成模块; 所述在线日志分析与故障定位模块包括日志预处理器和用户故障日志定位器两个子 模块,用于对获取的日志数据进行预处理,并将用户故障匹配到一个或几个问答网站的问 题上;所述日志预处理器以问答网站的问题日志数据和用户系统日志数据作为输入,对日 志数据进行预处理;经过预处理后,用户故障日志定位器通过相似度匹配的方法计算用户 日志和问答网站问题日志间的距离,将用户日志中的故障问题匹配到问答网站的问题,并 将结果传递给所述故障修复脚本生成模块; 所述故障修复脚本生成模块包含修复指令提取器、修复指令仓库和修复脚本生成器子 模块,用于自动生成用于修复用户配置故障的脚本;所述修复指令提取器以问答网站答案 数据为输入,通过分析网站答案数据,将答案中的指令或文件操作提取出来,作为该问题的 解决方案;所述修复脚本生成器根据用户故障定位结果,提取相应问题的解决方案,并根据 用户系统文件目录,生成该问题的修复脚本;最后将脚本提供给用户用于解决用户系统的 软件配置故障。
【文档编号】G06F17/30GK105824718SQ201610202074
【公开日】2016年8月3日
【申请日】2016年4月1日
【发明人】李影, 贾统, 岳阳, 吴中海
【申请人】北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1