1 什么是根因分析? 在 IT 中,根因分析是确定硬件或软件问题的根本问题原因是什么的过程。 根因分析很重要,因为在许多情况下,有多个可能的问题原因,而且从问题本身来看,原因并不明显。 2 为什么当前根因分析尤其重要 从前,根因分析相对简单,因为 IT 团队需要管理的硬件和软件层较少。物理基础架构和硬件环境之间也几乎没有抽象。 3 充分利用 AIOps 进行根因分析 部分原因是由于现代环境中根因分析的困难, AIOps ( https://sweetcode.io/aiops-ebook-ad ) 变得如此重要。 记住,配置快速变更,根因也会随之变更 在瞬息万变的现代环境中进行根因分析的棘手事情之一是,一次构成根本问题的原因可能在下一时刻改变。 这里的关键要点是,一方面,在执行根因分析时,您应努力将辅助问题与根因区分开,但您不应排除可能存在两个或多个核心潜在问题的可能性。 4.
这篇文章的灵感,来自前几天技术交流群讨论的内容,也是广大测试同学日常接触最多但也最容易忽视的一点:bug根因分析。bug嘛,一说起来大家都熟,毕竟测试这个岗位,最初的时候,被称为“捉虫者”。 要提升质量和效率,最实用和最具性价比的方式,依然是bug根因分析。只有解决了最根本的问题,才能更有底气的完成保质提效的目标。 说到根因分析,很多公司都会有所谓的问题复盘,但遗憾的是,复盘后的改进动作和落地结果,很少有人关注和不断验证。 质量保障和提效比较合理的步骤是这样的: 统计问题,收集数据和证据(日志); 开展根因分析,找到最底层最本质的问题; 思考解决问题的办法,并进行调研论证对比; 找到适合自己团队现状的方案,进行快速落地验证 当然,bug根因分析和质量的持续改进并不仅仅是测试团队的工作,而是应该和其他团队如运维、架构合作,一起来持续的对质量和效率进行改进和提升。
1 背景 本文主要从基于日志、基于trace和基于监控指标这三个方面,初步罗列了微服务架构的异常检测和根因定位的相关论文。 2 基于日志的异常检测与根因定位 2.1 异常检测 Anomaly Detection Using Program Control Flow Graph Mining From Execution Logs LogSed: Anomaly Diagnosis through Mining Time-Weighted Control Flow Graph in Logs. 2.2 根因定位 Localization Faults in Cloud Applications by Mining Causal Dependencies in Logs using Golden Signals. 3 基于trace的异常检测与根因定位 Virtual War Room and Matrix Sketch-Based Streaming Anomaly Detection for Microservice Systems. 3.2 根因定位
8月27日,济南技术沙龙,来自中亦科技的黄远邦(小y)给大家带来的主题是Oracle根因分析案例分享。以扎实的理论基础向大家展示了如何做根因分析,以及根因分析的重要性。 小y虽然是第一次参加济南线下分享活动,但实战经验丰富无比的他没有让大家失望,小y用一个个鲜活的案例和生动的讲解为大家诠释了什么时根因分析,根因分析的好处以及如何做根因分析,大家纷纷表示受益匪浅,期待小y
论文地址:https://hal.inria.fr/hal-02441640/document 基于调用链的拓扑关系, 识别根因 1、Liu P, Xu H, Ouyang Q, et al.
本文将给出基于决策树的智能根因分析方法,针对多维(可变维可达到千万维)找出导致问题的根因。做数据、搞AI一定要基于具体业务,不可脱离业务谈数据、算法,否则将得不偿失。 根因分析大体流程 介绍完决策树的一些基本信息,我们回过头来看一下为什么要选择决策树做根因分析呢?这明明是一个分类模型,和所谓的根因分析怎么挂上钩呢? 根因分析的大体流程: 特征工程:选择合适的数据,并将数据数值化。 模型训练,利用sklearn等工具训练决策树模型。 基于训练结果做根因分析,或做新数据预测分析。 针对分析的结果做校验和优化。 ? 这样的用处: (a)可以用于模型优化; (b)用于根因分析结果链路选取的依据,因为决策树根因分析结果是多条路径,而通常我们选择的根因因素是其中某几条。 根因分析的发散 基于决策树的根因分析大体上就如果上面所述,下面讲一下对于根因分析的发散,也是从不同的角度去分析这个根因,基于交叉熵或相对熵的根因分析。 信息熵: ?
这里我并没有提到根因或根本原因,理由就是我们原本所认为的根因可能往往不止一个,可能会有多个。 这个怎么理解呢? 那这个故障的根因是什么呢? 有的人可能会说是服务器宕机引起的,服务器问题是根因。 有人会说上层数据库没做高可用,数据库问题是根因。 也有人会说业务层面没做功能降级,到时业务不可用,业务架构问题是根因。 你看,就一个简单的服务访问问题,不同角色就会有不同理解。 (这个点后面单独写篇文章分享) 但是如果我们换个角度,不把根因唯一化,而是系统化的看根因,我把它们叫做深层原因,同时把找原因的目标放到改进上去,就完全不一样了。 如果我们能跳出根因这个框框,我们会发现我们可以找到更多的改进点,每个参与者可能都会找到自己应该改进的地方。
当发现指标异常之后,对根因的定位很困难。尤其是涉及多个团队的综合指标,经常需要为了定位根因拉齐后台,客户端,产品各个方向的骨干成员,讨论若干次才能有结论。 本文主要分享在指标的监控和告警分析的一些经验,如何提升告警发生后的根因分析效率。 近期部门在大力推广数字化,各个业务的报表都统一到 Grafana 平台展示。 本文总结了之前在指标异常监控和指标告警分析的一些经验,主要包括三个部分: 第一部分是总结指标监控时遇到的问题,常用的指标展示平台对告警的支持情况,如何合理的设置告警阈值; 第二部分是总结指标异常分析时遇到的问题,对如何提升根因分析效率的思考 告警根因分析 01 告警根因分析的难点 告警只是第一步,更重要的是告警后的分析处理。事实上,业务指标受很多因素影响,当告警发生时,常常把所有相关人员拉到一起分析,定位根因的过程非常耗费人力和时间。 根因分析:目前根因分析已经有一些思路,主要还是告警发生后人工分析。未来计划把人工分析转化为自动分析,当告警发生的时候,直接给出一些分析结论,比如和客户端是否有关,指标的哪个维度是异常的主要原因等等。
Debug Agent 利用 AI 技术理解程序状态、定位问题根因、提出修复方案、甚至自动修复 bug。 本文深入讲解 Debug Agent 的核心技术实现:调试接口(JVMTI、debuggerd、Core Dump)的利用、运行时状态提取(变量值序列化与快照)、调用栈分析(栈展开与符号解析)、根因分析 根因分析:基于模式的错误分类 5.1 错误模式分类体系 5.2 异常模式识别引擎 5.3 调用栈级别的根因分析 6. 根因分析:基于模式的错误分类 本节为你提供的核心技术价值:掌握错误模式识别、异常分类、根因推导的核心算法,使 Debug Agent 能够从复杂的调试信息中提取问题的本质原因。 5.1 错误模式分类体系 Debug Agent 的根因分析引擎需要识别和分类各种错误模式。
Maria,一位电子商务网站的可靠性工程师,收到一条警报,由于高于正常水平的失败率,该网站的结账成功率在过去 30 分钟内下降了 15%。使用传统的监控工具,要花费数小时进行人工分析和故障排查。
环境: OEL 5.7 + Oracle 10g + amdu_X86-64 现象: 我的两套实验环境,一套单实例,一套RAC,操作系统都是OEL 5.7,数据库都是Oracle 10g,上传同样的amdu介质。一个正常,一个报错:
当然了实际工作中是基本不会出现这种情况的, 假设真的取了100万数据, 无论是MySQL内存缓冲区的占用,还是网络带宽的消耗都是巨大的。
随着人工智能技术的发展,AI辅助测试分析为缺陷预测和根因定位提供了新的可能性。 提升开发质量:通过分析根因,帮助开发团队改进代码质量和开发流程 积累经验知识:将根因分析结果转化为组织知识,提升整体能力 1.3 传统方法的局限性 传统的缺陷预测和根因定位方法主要依赖人工经验和简单的统计分析 第三章:智能根因定位技术 3.1 传统根因定位的挑战 传统的根因定位主要依赖测试工程师的经验和手动排查,面临以下挑战: 信息不完整:缺乏足够的上下文信息,难以准确定位根因 复杂度高:现代软件系统复杂度高 主要方法包括: 数据收集 → 异常检测 → 模式识别 → 因果分析 → 根因定位 基于日志的根因定位:分析系统日志,识别异常模式和关联关系 基于代码的根因定位:分析代码变更和历史缺陷,识别高风险代码片段 基于测试数据的根因定位:分析测试执行数据,识别失败模式和相关性 基于服务依赖的根因定位:分析微服务架构中的依赖关系,识别故障传播路径 基于用户行为的根因定位:分析用户行为数据,识别导致缺陷的特定场景
环境: OEL 5.7 + Oracle 10g + amdu_X86-64 现象: 我的两套实验环境,一套单实例,一套RAC,操作系统都是OEL 5.7,数据库都是Oracle 10g,上传同样的amdu介质。一个正常,一个报错: --报错环境: [oracle@rac1-server lib]$ amdu amdu: symbol lookup error: amdu: undefined symbol: hac_kpuhh
在现代数据库系统中,如何有效地分析日志、快速定位故障根因是保障系统稳定性和性能的关键任务。 利用自动诊断存储库中的健康监控数据,进一步分析系统健康趋势和异常根因。2. Trace日志和黑匣子数据的深度解析Trace日志详细记录数据库各个线程、进程的运行状态及调用栈。 快速定位故障根因的技术建议建立系统化的日志收集与汇总机制:统一采集数据库主备实例、节点、集群服务(YCS)、文件系统(YFS)等关键日志,保证日志时间线准确,方便跨组件关联分析。 分析主备切换和选主日志:详细审查主备切换时序和自动选主过程的投票与心跳日志,识别是否有因选主机制导致的延迟或脑裂。 YashanDB日志体系结构和核心技术要点,揭示了如何通过告警日志、Trace日志、redo日志、备份恢复日志及主备切换日志等多维度日志数据,结合数据库内部线程状态及事务控制信息,实现故障的快速定位和根因分析
这是每一个制造业的销售人员最怕接到的电话。客户催交期,销售去问生产,生产去问计划,计划去问物料 —— 一圈转下来,可能过了两三个小时,拿回来的答案是 “应该没问题” 或者 “可能要晚几天”。
根因猜想 大面积的崩盘, 肯定是基建发生了问题, 基础不牢,地动山摇。 据内部人员小道消息:服务发现/注册中心 发生了故障。
1.2 根因分析的常见误区 很多团队有“根因分析”的意识,但在实践中容易陷入两个极端: 流于表面:根因分析停留在“代码写错了”、“测试没覆盖”这个层面,没有追问“为什么这类代码容易写错”、“为什么这个场景的测试覆盖逻辑是这样设计的 过度抽象:另一种极端是把根因归结为“流程不规范”、“团队协作有问题”。这类结论无法落地,因为它没有告诉任何人下次遇到类似问题时,第一步应该检查什么。 真正有效的根因分析,需要既有足够的深度(追到可操作的层面),又有足够的结构化(让下一个人能复用这套分析路径)。这正是 Skills 能发挥作用的地方。 第3件:根因归因框架。当问题被定位后,Skills 可以辅助完成根因分析——基于问题类型,给出这类缺陷通常的根因分布,帮助工程师更快找到真正的“为什么”,而不是停留在现象层面。 四、根因分析的 Skill 化:从“查到了”到“真的懂了” 4.1 根因分析的四层模型 缺陷被定位之后,很多团队的复盘就结束了。
QAPM原有Hprof分析是基于开源项目LeakCanary的shark Andoroid Extension,这里仅有针对安卓内存泄露部分,同时包含了一个极其简陋的内存触顶分析模块,只能根据一定规则获取极少的信息。为了适应更多针对内存触顶的新分析需求:如图片重复,图片超尺寸,字符串重复,对象重复分析与问题引用链聚类等更复杂的Hprof分析,包括获取更多问题信息时,原方案就显得力不从心,因此重构成了唯一的选择。
笔者学习调研agent相关内容,目的是为了搭建一个做根因分析(RCA)自主规划的Agent,通过如上分析对比,最适合的应该是LangGraph框架了,可以封装RCA Agent后,再通过api的形式发布 07 — 企业级根因分析(RCA)方案思考 笔者在公司设计aiops落地RCA时,想着最终的形态应该是个自主规划Agent。 痛点:很多时候根因不在报错的服务,而在它依赖的底层组件(例如:A服务报错是因为B数据库慢,B慢是因为C存储满)。 单纯的Agent很难“猜”到这个链路。 08 — 结语 笔者了解到目前许多大厂内部的落地方式:把 LangGraph 做成一个微服务, 先用 LangGraph 把最核心的“根因分析算法”跑通,把它封装成一个 API。