一分钟精华速览
可观测能力是指在复杂的软件系统中能及时、准确感知到服务状态,特别是异常或故障的发生,确定异常的影响范围、异常部位边界、判定异常点位、并由相关人员或软件做出准确决策的能力。
本文作者结合虎牙SRE实践及20余年架构、研发、运维经验,重点讲述如何设计和建设观测能力,做到分钟级感知故障、定位和快恢。
作者介绍
《SRE原理与实践》作者 张观石
TakinTalks稳定性社区专家团成员,前虎牙SRE负责人,资深运维专家和架构师,拥有20年软件开发、架构、运维、SRE经验。历任项目研发负责人、SRE负责人、架构师,事故管理委员会委员、基础保障部架构师委员会委员。熟悉基于微服务架构的直播业务、音视频业务、海外直播业务的稳定的保障体系。在混合多云架构、可观测性、预案、变更管控、AIOps等SRE领域有深入研究和丰富经验。参编信通院《信息系统稳定性保障能力建设指南》。
温馨提醒:本文约5000字,预计花费10分钟阅读。
后台回复 “交流” 进入读者交流群;回复“2251”获取课件资料;
背景
在以前,运维团队一般都是做后端运维,比如基础监控、操作系统、中间件、拨测等等,但是互联网平台以业务为中心,以用户为中心,平台的功能服务、质量和用户体验等是关键的目标,仅仅关注后台系统的可用性是不够的,以传统运维的视角来解决故障、做监控会比较被动。
运维想主动介入到业务中,我认为建设可观测能力是一个很好的办法,融入研发和业务部门的视角,甚至用户的视角,通过可观测性建设把SRE的工作推进到移动端、业务侧、微服务的内部,甚至可以用来度量相关的能力,真正深度参与到提升业务连续性中。作为SRE来讲,从用户的角度来保证业务的稳定性和质量是最终目标。
一、观测能力如何帮助快速定位?
这里我先从虎牙的一个实际案例,来展开讲讲观测能力是如何帮助快速定位的。
发现:
。
3.3 明确度量要求
故障过程的度量要求这里有2个参考,一个是阿里的“1-5-10”,即1分钟发现,5分钟定位,10分钟修复;二个是虎牙的“2-3-5”,即2分钟发现,3分钟定位,5分钟修复。
3.4 建设可观测性的3个要点
第一点,要做统一的规划建设,包括统一采集、规范、上报、存储、UI/API、公共算法等。
第二点,建议把影响用户的关键指标作为业务的黄金指标,并和业务研发、老板达成一致,从用户侧上报这些关键的质量指标,并为每个黄金指标配置一套完善的监控、分析、排查、诊断甚至修复预案的能力。
第三点,以终为始,通过黄金指标的建设,建立起一套度量的体系,一方面度量业务本身的质量、稳定性,另一方面可以度量整个过程,比如首发率、监控告警率、告警漏告率,以及发现时长、定位时长、修复时长等等,形成指标体系,以此在公司内部打通上下认知。
3.5 建立可观测性-指标范例
下图是虎牙在某个微服务的监控指标,供参考。
3.6 案例:可观测应用
下图是可观测帮助发现能力短板的又一个案例。分析此故障中,故障发现能力存在严重问题,工程师升级实例失败没有发现,也没有告警,而是通过调用此服务的上游业务告警后才发现。
以上就是可观测性建设的整体思路和方法,具体的实践细节在《SRE原理与实践》的第四章中,有较大的篇幅重点来讲,包括一些实践案例在书中都有详细的讲解。
四、实践案例:AIOps提高故障定位效率
AIOps最大的作用,我认为是可以帮助理解海量的数据,在海量的数据里找到相互间的因果关系、正相关性等逻辑关系。比如,指标抖动后的分析各个维度之间的相关性、逻辑性,并能够通过算法分析。在过往可能每个维度都需要人工分析,而AIOps算法能够自动化地做这些分析。
4.1 观测帮助快速发现、定位、快恢
当某直播间总卡顿率出现异常时,需要确定是哪个维度及组合中的指标(集合)导致的。如图可以看出有三个线路都有卡顿,按码率只有一个1200,按P2P有唯一的卡顿,这样通过人工来看,可以大概得出结论是按码率和P2P这个组合导致的卡顿。基于这个长期的经验,SRE团队研发了卡顿多维度更新定位的算法,同时联合多个部门闭环解决。
如上图所示,我们在主播端加了一个智能的卡顿反馈按钮,点击卡顿时,后台就可以通过观测数据做算法分析,一部分确定是主播自己问题的,会反馈给主播并告诉主播如何修复,提供相应建议。另一部分通过分析发现是后台问题的,可以通过其他方式,比如切上行、切码率、切线路、切P2P等,做到部分自愈。无法自愈的部分,比较复杂的问题就会形成一个自动化的工单,进入工单系统中。
4.2 AIOps帮助快速定位:技术方案
对任意给定的叶子节点,采用了两个指标Influence Degree 和 Contribution Ability评价它和异常的相关性。
采用加权关联规则挖掘的方式自行挖掘维度之间的关系。
采用迭代定位的方式处理同一时刻有多个根因的情况。
最终基于原始数据分布排序输出推荐的根因。
4.3 AIOps帮助快速定位:效果
卡顿反馈按钮背后集成了AI卡顿定位模型,打通值班工单系统、一线&研发值班处理流程,最终主播卡顿平均解决时长由10分钟缩短到3分钟,时长明显缩短;
有1/3问题准确识别,能给主播提供修复建议;
工单总量下降50%,识别率达到80%;
所有Case经过多维度根因定位模型分析,Top1根因引发的报障由23%下降到了6%。
五、总结
以业务为核心进行,统一建设可观测性。在业务至上的时代,我们都要以业务为核心去做稳定性保障,而不是以技术工程师的视角认为只是保障IT系统或者软件。一个业务可能会涉及到很多微服务系统、庞杂的基础设施、庞杂的用户终端,孤立地只关注某个层面是不够的,必须要以业务为核心去把整个链路给串起来。
充分利用业务特点和AIOps算法,集成到发现和定位、判断决策的过程。不管定位还是修复,都需要尽量利用算法的能力
把分析结果与告警、预案等打通。让整个链路工作捋顺、上下游畅通。
添加助理小姐姐,凭截图免费领取以上所有资料
并免费加入「TakinTalks读者交流群」
声明:本文由公众号「TakinTalks稳定性社区」联合社区专家共同原创撰写,如需转载,请后台回复“转载”获得授权。
本文由博客一文多发平台 OpenWrite 发布!