论文部分内容阅读
随着计算技术和通讯技术的不断发展,以通信、存储和计算为核心的信息技术服务已经广泛渗透于社会生活的各个层面,7′24小时持续可信提供服务成为此类服务的基本需求。作为承载此类信息服务的软件基础设施通常以分布式方式组成,具备用户规模巨大、数据规模巨大以及计算设施规模巨大等规模化特征。规模化特征会导致此类软件系统在运行时的行为和环境复杂:一方面,软件自身的缺陷很难完全排除;另一方面,软件也不可能在开发阶段预期运行时面临的所有问题。因此,大规模分布式软件系统往往需要在系统组成构件持续失效的环境下提供服务,严重威胁7′24持续运行的高可信需求。“监视-执行”作为一种有效的系统运行时可信保障机制,依赖于“故障定位”技术准确、高效地判断当前系统发生的故障,从而及时执行相应的可信确保操作。日志信息作为系统行为的有效抽象被广泛应用于故障定位的两类方法:对已知故障特征行为的建模和对系统正常运行特征的建模。然而,在软件行为以及运行环境复杂的大规模分布式软件系统中,现有基于日志信息的故障定位工作仍面临巨大挑战,突出表现在:对已知故障建模的过程中存在大量噪声日志,影响模型的有效性;对已知故障建模的过程中会遗漏故障的持续性特征,导致故障定位结果产生大量误报、漏报;对系统复杂的正常运行行为难以提取稳定的特征模型,异常行为检测效率低下,难以运用于在线环境。本文针对上述挑战,以企业级大规模分布式软件系统为研究对象,从基于故障特征的故障定位方法以及基于正常行为特征的故障定位方法两方面展开研究,通过使用系统日志信息的时间序列属性、统计属性以及事件属性,结合小波变换、相似度计算以及聚类索引等相关技术,针对噪声日志过滤、故障持续特征建模以及异常行为检测等关键问题展开研究。本文的主要贡献包括:(1)故障特征提取中基于时间序列相似度的噪声日志过滤方法针对故障特征提取中的噪声日志过滤问题,本文结合Haar小波变换提出了一种基于时间序列相似度的噪声日志过滤方法。该方法将每类日志信息建模为时间序列,用于提取日志信息在特定时间窗口内的数量变化规律。通过逐一提取候选噪声日志的特征模板,与故障特征建模阶段该类日志的行为进行比对,从而将与故障无关的日志删除。在阿里巴巴云计算公司内部生产集群环境的实验中,本方法将故障模型精确率提高至96%(检测窗口为50秒时),召回率提高至94%(检测窗口为100秒时)。进一步,为了降低噪声日志过滤方法的时间复杂度高,本文研究了噪声模板的聚类索引问题。通过使用时间序列相似度对噪声模板进行聚类,并使用高效的索引结构skip-list对类簇内的样本模板进行索引,能够将噪声日志过滤方法的性能提高43%。(2)故障特征提取中基于日志项状态变化的故障持续状态建模方法针对故障持续性特征的建模问题,本文提出了一种基于伴随状态追踪机制的方法。由于不同故障特征其持续时间和持续状态变化不同,在检测窗口之外的故障特征信息往往会被错误识别或者遗漏。基于伴随状态追踪机制的故障监测方法通过将故障特征建模为日志类型项状态变化模型,能够区分当前日志项是由新故障所引起还是之前故障的残留特征。在阿里巴巴云计算公司内部生产集群环境中的实验中,本方法将系统对故障特征识别的有效性(F-Measure均值)提高至90%(监视窗口为6秒时),从而能够有效地消除系统故障报警的误报与漏报。(3)正常行为特征提取中基于线程级日志序列的异常检测方法针对日志序列的异常检测问题,本文使用正常运行状态下的线程级日志序列作为系统正常行为模板,从而将异常日志检测问题转换为相似序列模板匹配问题。为了解决原始日志序列模板相似度进行聚类的稳定性及异常检测的时效性缺陷,本文使用日志类型特征向量的余弦相似度方法来近似计算序列相似性,并使用Top-K搜索限定待比对的模板集合,同时结合日志类型倒排索引对初始模板集合进行快速筛选,在Hadoop平台中将相似模板匹配的效率提高了8.6倍(相似度阈值为0.95,取Top50的情况下)。进一步,为了提高日志模板检测精确度,本文提出了基于子序列特征向量聚类索引的序列模板匹配方法。由于日志类型特征向量缺乏时序信息,导致其对线程级日志序列相似度计算的“近似”效果较差。本文在重复连续子串分析的基础上,将线程级日志序模板建模为子序列集合,以子序列标识为粒度构建子序列特征向量,从而对日志序列模板进行聚类。该方法在保持一定匹配效率的基础上,同时考虑了日志序列的局部时序关系,在Hadoop平台中将对比日志类型特征向量方法将匹配精确度提高了15%(相似度阈值为0.90,取Top40的情况下)。此外,为了辅助上述研究工作,本文进一步构造了日志监视、分析、展示工具集LogAnalyzer,实现了对在线日志行为实时展现以及对不同场景下系统行为的离线分析,从而帮助系统维护与管理人员从日志信息的角度理解系统行为。