基于程序层次树的日志打印位置决策方法∗
2021-11-09张齐勋吴中海
软件学报 2021年9期
贾 统,李 影,张齐勋,吴中海,
1(北京大学 信息科学技术学院,北京 10087 1)
2(北京大学 软件工程国家工程研究中心,北京 10 0871)
3(北京大学 软件与微电子学院,北京 10260 0)
随着人工智能技术的发展,Gartner 提出智能运维(AIOps)技术的概念[1],即:通过机器学习等算法分析从多种运维工具和设备收集而来的大规模数据,自动发现并实时响应,以增强IT 运维能力和自动化程度[2].在AIOps技术趋势下,基于系统日志的大规模分布式系统自动化故障诊断技术发展迅速.这些技术通过分析和挖掘系统日志,构建刻画系统正常运行时的请求执行路径的模型,然后自动检测系统运行时的日志序列与模型之间的偏差,以实现精确异常检测和故障诊断.然而,这种基于日志的自动化故障诊断技术存在一个重要的瓶颈,即系统日志的质量.对大规模软件如Apache,Squid,PostgreSQL 等的系统失效报告分析发现[3],77%的系统失效归结于几种常见错误模式,而这些错误模式中有超过一半(57%)并没有被记录在系统日志中,导致自动化故障诊断模型无从分析与检测,从而需要花费大量人工和时间成本来定位、诊断和修复这些错误.
现今,软件系统开发缺乏统一的日志打印标准和规范,其日志打印决策依赖于程序开发人员的个人理解和调试需求.由于软件开发人员的编程风格、领域知识和需求的不同,程序中日志打印的风格、内容、位置也大相径庭,由此引发分布式系统日志质量的参差不齐.有调研表明:即使是在国际领……
登录APP查看全文
