一种基于日志挖掘的微服务故障预测方法技术

技术编号:33194344 阅读:17 留言:0更新日期:2022-04-24 00:22
发明专利技术涉及一种基于日志挖掘的微服务故障预测方法。根据系统追踪日志上定义的功能,自动执行原始和注入错误的目标程序,获取相应的系统追踪日志,分别在系统追踪日志和微服务层面,基于机器学习训练故障预测模型。将预测模型应用于生产环境以在运行时预测潜在错误、检测故障微服务和分析故障类型。测故障微服务和分析故障类型。测故障微服务和分析故障类型。

【技术实现步骤摘要】
一种基于日志挖掘的微服务故障预测方法


[0001]本专利技术涉及一种基于日志挖掘的微服务故障预测方法,属于软件


技术介绍

[0002]微服务应用通常有多个微服务运行在数量众多的服务器上,生产环境中的基础设施或应用错误经常会引起微服务故障,因此在测试环境中诊断微服务应用故障具有挑战性。在云基础设施层,可以通过故障预测、虚拟机分配和迁移等技术手段处理故障(Jawwad Ahmed, et al. Online Approach to Performance Fault Localization for Cloud and Datacenter Services. In Proc. IFIP/IEEE Symposium on Integrated Network and Service Management. 873

874.)。在软件应用层,故障依赖于开发者通过代码审查、测试和调试的方式修复故障(Elton Alves, et al. 2011. Fault Localization Using Dynamic Slicing and Change Impact Analysis. In Proc. 26
th IEEE/ACM International Conference on Automated Software Engineering. 520

523.)。已有方法匹配使用故障注入产生的相似故障,仅具有一定泛化能力且不支持故障识别(Daniel Joseph Dean, et al. 2016. PerfCompass: Online Performance Anomaly Fault Localization and Inference in Infrastructure-as-a-Service Clouds. IEEE Trans. Parallel Distrib. Syst. 27, 6 (2016), 1742

1755.)。然而,微服务应用由于具有复杂的交互和动态的运行时环境,难以检查并处理故障。微服务应用根据资源和性能需求,动态创造或销毁众多微服务实例,实例间交互复杂,且每个实例都涉及数十个微服务调用链。环境配置不当、微服务实例错误、异步交互问题都可能导致运行时故障的出现。因而,在生产环境中,使用微服务的日志信息检测并定位故障问题具有可行性。日志通过开发者在应用中写下的记录语句产生,在应用程序执行时记录其内部执行的时间和状态。但应用程序日志通常以任意的临时方式记录,对错误诊断的作用有限。已有方法使用日志方式检测异常或预测基于云系统产生的故障,这些日志由操作系统、分布式文件系统和容器编排系统等基础软件产生,因而只能检测发生在计算或存储节点的云基础设施中的异常或故障。

技术实现思路

[0003]本专利技术的目的:通过挖掘系统追踪日志对微服务应用进行潜在错误预测和故障定位。
[0004]本专利技术的原理:本专利技术挖掘系统日志,预测多实例故障、配置故障和异步交互故障等与微服务交互和运行时环境具体相关的常见故障。与分析内部运行状态和逻辑产生的故障不同,这些故障与外部追踪日志的特征相关,比如微服务实例的数量、全局变量或本地缓存的权限、资源消耗和执行命令等特征。本专利技术从追踪日志中提取反映微服务动态环境和交互的特征并训练了基于该特征的预测模型,预测潜在错误可能导致的故障。该方法基于相关分析提取的追踪日志,结合了系统和微服务层的预测。系统层预测,利用在其特征向量中特定于应用程序的上下文,并在训练预测过程中把追踪实例作为整体来对待。微服务层
预测,以无上下文的方式使用微服务功能,基于模型预测目标服务的故障类型。
[0005]本专利技术技术解决方案:一种基于日志挖掘的微服务故障预测方法,其特点在于实现步骤如下:第一步,错误注入:将不同类型的错误注入到应用的不同部分以产生存在故障的目标应用。对于每个错误版本,以半自动化的方式注入一种类型的错误到一个特定的微服务,并为每种类型的故障设计一种故障注入策略。每个故障注入策略具有以下参数:指定微服务错误注入位置的前提条件;指定如何生成一个补丁以转化微服务为故障微服务的代码转化方法;指定是否注入错误引起故障的预期症状。为了将特定类型的故障注入目标应用程序,首先确定应用程序中错误注入的位置,并且在该位置加入错误代码以引入故障,检测故障微服务是否能够成功编译,如果不能则将人工修复编译问题。通过多次执行测试用例以验证故障注入结果,如果在其中一种执行中观察到预期的故障症状,该故障注入即被认为是成功的,每个成功注入的故障都会合并到目标应用程序中以产生故障版本。
[0006]第二步,执行控制:自动部署原始和注入错误的目标应用,使用现有的测试案例执行应用并收集追踪日志。对于错误版本,改变应用的运行环境以使应用在不同的设置下执行,包括不同的微服务实例数量、环境配置参数和异步交互序列。对于每种设置,随机次数执行涉及故障微服务的测试案例,以得到多个在同等设置下的追踪实例。在应用和其错误版本执行期间,持续收集追踪日志,包括每个追踪实例的微服务调用序列、环境配置、资源消耗、微服务实例数量等,为预测模型提供所需的特征。
[0007]第三步,构建训练数据集:对于每个追踪实例,通过提取追踪层特征并标出其错误状态、故障类型和故障定位,生成系统追踪层的训练样本。对于每个在追踪实例中的微服务,提取微服务层特征并标注其错误状态,生成微服务层的训练样本。然后,进行特征提取,在追踪实例中提取微服务层特征,汇总这些微服务层特征至系统追踪层特征。追踪实例的错误状态可以是0或1,0表示追踪实例有一个潜在错误,而1表示其他情况,包括追踪实例没有错误或者有其他未知错误的情况。如果追踪错误状态是1,标注该相应追踪层训练样本的错误状态为1并标注每个微服务层训练样本的错误状态为“无错误”。如果追踪错误状态为0,标注相应追踪层训练样本为0,它的故障类型标注为注入故障类型,并将它的故障位置标注为故障微服务,并标注其故障类型。
[0008]第四步,模型训练:运行原始应用和注入不同种类故障的错误版本,并使用相应的测试案例。在这个过程中,应用使用不同的设置执行,如实例数目,环境配置和异步调用执行顺序等。在训练预测模型之前,使用标准化的预处理训练数据方法,包括清洗、类别编码、离散化和特征缩放。清洗将训练样本中丢失的数据置换为典型的值,即连续值的表示和最频繁出现的值;类别编码过程将分类值转换为从0到N-1的整数值,其中N是特征的编码数字;离散化过程通过将值的范围划分为K个分区使连续值,转化为从0到K-1的整数值;特征伸缩则将特征值范围归一化至[0,1]。使用贝叶斯分类器、KNN、神经网络等机器学习技术以训练预测模型。贝叶斯分类器是一种针对在训练时间构造众多决定树并且输出个别树的的类别模式的分类整体学习技术;KNN是一种通过多个邻居的投票决定对象类的无参分类技术神经网络是一种将一组输入数据映射到一组适当输出的前馈人工神经网络模型。使用网格搜索技术优化这些分类模本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.方法特征在于实现步骤如下:第一步,错误注入:将不同类型的错误注入到应用的不同部分以产生存在故障的目标应用;第二步,执行控制:自动部署原始和注入错误的目标应用,使用现有的测试案例执行应用并收集追踪日志;第三步,构建训练数据集:对于每个追踪实例,通过提取追踪层特征并标出其错误状态、故障类型和故...

【专利技术属性】
技术研发人员:李扬陈杉杉张鼎
申请(专利权)人:神州数码信息系统有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1