向可观察性的转变
可观察性(Observability)不是一个新名词,这一概念最早是匈牙利裔工程师鲁道夫·卡尔曼针对线性动态系统提出的概念。但是它在 IT 领域却是一个新兴事物。可观察性进入人们的视野是来自于 Apple 工程师 Cindy Sridharan 的博文“监控与观察”(Monitoring and Observability),其中重点阐述了监控与观察的关系、观察的特点等重要理念。自从被引入到了 IT 领域,这个概念已经沸沸扬扬。监控可以告诉你系统是否正常运行,可观察性可以让你了解为什么系统无法正常工作。过去的一年,我们看到在运维领域从监控到可观察性的演进。
图1:运维的可观察性
可观察性基石可以分为三个方面:
• 指标(Metrics):指标是一段时间内累计的计数或度量,可以详细了解系统的运行状态;指标将告诉你某个方法使用了多少内存总量,或者服务每秒处理了多少个请求。
• 日志 ( Logging):展现的是应用运行中产生的事件,可以详细解释系统的运行状态。它是不可变的事件记录,带有时间戳标志,可以识别系统中不可预测的行为,并洞悉发生错误时系统行为的变化。
• 追踪(Tracing):面向的是请求,追踪使你能够了解特定请求的详细信息,以确定是哪些组件导致系统错误,监视通过模块间的流量,可以查找性能瓶颈。
**
可观察性幸福金字塔
**
尽管已经讨论了可观察性的三大支柱,但有一个更好、更直观的结构,我将其称为“幸福金字塔”。金字塔的想法是,它是一种上下颠倒的漏斗,有助于实现正确的结果。金字塔的底部代表着来自各种系统的大量潜在事件。通常,每次检测到异常时,监视平台都会生成一个事件。金字塔的顶部包含一些经过提炼的准确的事件,这些事件都被作为单个代表事件进行跟踪直至恢复服务。
图2:运维幸福金字塔
告警在监控的体系是用于提示系统异常,而在观察的体系下,更多了一层过滤繁杂信息的作用。一个好告警的关键是能够在正确的时间、以正确的理由和正确的速度传递有用的信息。
金字塔尖的告警挑战
然而,每一个运维工程师都可能被告警疲劳所困扰。某运营商系统的运维工作者,平均13分钟就会接收一次短信告警,在夜间则是平均37分钟一次,而实际数据统计发现,有效短信告警占比不到14%。因此短信告警的冗余度是非常高的,已经造成了告警疲劳。告警疲劳的影响主要体现在三个方面:
**• 告警被淹:**告警面临最大问题,是告警太多,相当于“狼来了”的形式。收件人很容易麻木,不再继续理会,就会把告警通知演变成“狼来了”的故事,失去了原来告警的效用。每天产生大量的告警,运维人员疲于应付大量的告警消息,需要耗费更多时间排查和处理问题,大大降低了运维效率,更为严重的是会让真正关键的告警信息淹没其中,由于无法第一时间发现根源问题,延误了故障处理时间,小问题可能变成大问题。
**• 士气低落:**如果大部分时间都用于解决问题,不仅要没日没夜地处理事件,而且所做的事情越来越无聊,感觉每天就是灭不完的火,这样很容易磨灭团队的沟通热情,导致工作效率降低。
**• 机会成本:**这是告警疲劳所造成的影响中最容易被忽略的一点——整个团队和交付链所耗费的成本增加。团队在告警过程中不堪重负,他们就无法完善和创新,因为他们只会机械地响应,没有精力去开发更好的版本、完善基础设施的自动化过程或主动预防未来的问题。
告警疲劳,主要是由于告警太多所致:
• **大量监控对象:**业务越来越复杂,层次越来越多;x86化,微服务化,容器化,监控的软硬件对象的数量大幅增加,监控粒度越来越细致,立体化的可观察性监控,带来监控指标的爆炸,也收到越来越多的告警。
• **告警准确度低:**传统依赖人力针对数万监控指标需要配置大量规则,系统的动态变化、规则不全面不准确,这些都导致大量误告警。以往基于阈值的设置,通常在低限度预警情况下,无法判断是否有故障,而一旦到达高限度阈值告警,往往故障已经发生。
• **重复告警多:**告警策略执行周期计算,因此会持续产生重复告警。更严重的情形是,一次故障可能引发多个相关策略告警。比如一台机器死机,首先机器层面告警,然后实例层面告警,接着服务上游也可能会告警。
• **缺乏关联聚合:**传统告警工具只能针对被监控组件本身进行监控和异常告警,无法从相关性和全局来进行告警的统一处理。如一个网络设备的故障就可能引起“告警风暴”,产生大量的告警,而真正需要处理的告警只有一个。
**• 没有沉淀经验:**历史告警处理经验没有保留和利用,没有知识沉淀、知识经验分散在各专家脑中。
**
完整的可观察性平台
**
要解决告警的挑战、运维的挑战,引领运维的演进,那么减少工作量、提高生产率和提供价值的关键且唯一的方法,是将可观察性和AI更好地结合在一起,并应用多层AI,因此也有了AIOps。我们希望AIOps能处理日志、指标,跟踪和告警这些可观察性数据,从而减少了噪音、切实可行地建立相关性,并提供了深入的上下文洞察力,使团队能够比以往更快地解决IT问题。可观察性智能运维系统,可以划分为6个等级:
图3:可观察性智能运维等级
• **等级0:**手工分析,依靠基础的 Dashboard、告警、日志查询、分布式链路追踪等方式进行手动告警和分析,这也是目前绝大部分公司使用的场景;
**• 等级1:**智能监控,如智能KPI的异常检测、日志智能异常检测等,能够自动去扫描所有的可观察性数据,利用机器学习的方式去识别一些异常并进行自动告警,免去人工设置及调整各种基线告警的工作;
• **等级2:**智能告警,对于监控识别的异常,能够进行上下文的关联分析,结合统一的业务视图,在全局的视野下,识别出真正需要关心的问题,并快速进行问题的定界定位;
• **等级3:**根因分析、故障自愈,根据识别出来的故障问题,借助专项算法或专业领域的知识图谱进行细粒度根因分析定位,根因定位准确后可以去做问题的自愈。这一阶段相当于是一次质的飞跃,在某些场景下可以在无人参与的情况下实现问题的自愈;
• **等级4:**故障预测,故障发生了总会有损失,所以最好的情况是能避免故障的发生,因此故障预测技术可以更好地保证系统的可靠性,利用之前积累的一些故障先兆信息做到 “未卜先知”;我们知道绝大部分的故障都是由变更引起的,因此如果能够模拟出每个变更对系统带来的影响以及可能产生的问题,我们就能够提前评估出是否能够批准此次变更;
• **等级5:**能够自适应、自优化、持续优化、完全智能化,无人运维,实现智能自动化、实现无人值守和智能的运维与运营。支持服务完整生命周期的全部基础运维工作,均由智能运维系统接管,自主做到可用性、成本、效率的最优。
其实,AIOps也并不是那么神秘。本身包括五个主要功能:
- 从海量输入中选择数据的过程;
- 发现所选数据中的模式;
- 从这些模式中得出推论的过程;
- 传达这些推论的结果;
- 最后,可以自动执行补救措施。
AIOps是一类软件,数据选择算法消除了数据噪声、冗余的数据项。模式发现算法查找与那些重要数据项相关的模式。因果推理算法确定这些相关模式中的哪些实际上是可操作的原因。协作算法能够对现在相关且因果分析的重要事件做出反应。最后,自动化算法将执行团队协作计划中产生的计划。
图4:可观察性平台逻辑功能
**• 事件归集 :**通过事件总线或接口推送的方式,经过统一的事件平台处理,整合了不同的基础架构监视工具捕获的告警及事件,并实时进行标准化处理。
**• 去重降噪:**大量告警噪音不仅会阻碍检测和解决问题,还会阻碍更多的工作。降噪算法对大量告警数据进行去重、降噪,产生数量压缩、重要性分级的告警信息,形成相对于原始告警来说数量大大减少的聚合事件。使异常对运维人员显而易见,从而帮助他们在服务受影响之前解决,最小化对正常服务的影响。
**• **信息丰富:****AIOps对告警了解的越多,处理的质量就越高。将上下文信息例如位置、部门、业务关键性、服务关系、运行手册和升级流程等信息等添加到源告警事件中,可以有更多可分析和关联的维度,同时也丰富了告警信息和可读性。
• **关联分析:**关联引擎使用高级算法来检测不同告警之间的关联,并将这些告警聚类为聚集。聚集是可能导致事件发生的数据的集合。相关性算法分析告警,以识别影响服务的事件、问题或变更的相似性聚集。如时间相关性,历史上每次某一个告警总是伴随着另外一个告警的出现,那么可以怀疑两类告警之间存在必然联系,甚至因果关系,所以可以考虑合并聚合该两类告警。目前,有三种不同的方式将事件进行关联聚合分析:首先,可以将它们按照时间上的接近程度进行分组,其次,可以按照它们在空间上的接近程度或事件发生的变化拓扑的形式进行分组。 第三,可以根据由文本所描述的属性的相似性对事件进行分组。 这三个分组功能本质上是根据时间、拓扑和文本关联的事件集合。如DIA(Data Intelligent Analysis)关联分析引擎能使告警的数量减少了三分之二或更多!
• **根因推荐:**相关性不是因果关系。只有在事件之间可以建立因果关系时,IT运营团队才能真正决定需要在系统上采取什么措施以确保解决问题,自动化平台也只有在确定因果信息后,才可能有效地实现IT操作流程的自动化。可能性的根因采用神经网络,通过监督机器学习方式将告警属性与操作员反馈结合使用,分析实时数据集并预测哪些告警是最具因果关系。可能的根本原因具有以下好处:以DIA平台为例,通过查看“可能的根本原因”告警,在打开“情境”后立即确定从哪里开始进行故障排除和诊断。通过检查情境室“下一步”下显示的前3个“可能的根本原因”告警,快速解决情境。将时间和资源集中在修复最可能的根本原因告警上,以实现更有效的故障恢复。
• **协作处置:**团队之间的协作是解决复杂的多服务事件的最快方法。为了有效地进行协作,必须向所有团队成员提供事件的概况,以及向下钻取上下文相关细节的能力。无论是什么角色,DevOps或SRE团队中的每个人都可以在需要时通过平台的高效协作,快速、有效地响应事件。
• **知识沉淀:**从用户的行为中汲取经验,并改善协作环境。当开始出现以前引起麻烦的故障情境时, AIOps将识别这些情况并共享以前发生的事件中的信息。它会自动实施相关且有效的工作流程,以便团队可以有效地减少故障的平均检测时间和解决时间。
可观察性AIOps平台实践
选择正确的AIOps平台仅仅是开始,快速有效地实施该技术并迅速展示其价值至关重要。AIOps通过算法模型结合经验规则的方式对告警消息进行告警压缩和告警合并,在保证核心告警内容(即不压缩核心告警内容)的前提下合并告警消息数量,避免告警风暴,为运维人员提供有效的告警信息,提高故障解决时效性。
在某项目智能告警根因定位实践中,如某个拓扑情境的案例,聚合了10个告警, 描述内容都是接口down或者设备不可用的告警,类似于这种场景,极有可能是某台设备或者接口down,引发了相关联设备的宕机告警。对该场景进行根因溯源。根因溯源分两块,一个是溯源路径,另一个是告警根因树,溯源路径展示了相邻两个告警之间的因果关系,以及两个告警在拓扑上的相对位置。从溯源路径的箭头指向,可以确定根源告警所在的拓扑节点,据此运维人员可以快速对设备进行检查,消除告警源。从拓扑溯源图中可以看出,MSR3640设备宕机,导致分行无法访问;根因溯源的另一部分内容是告警根因树,图5中展示了告警的因果关系,系统推荐了最有可能的根源告警(中间红色定位图标所示):“MSR3640-M宕机导致了根因告警”。
图5:DIA某项目智能告警根因定位示意图
从某项目智能告警各流程收敛效果分析来看,DIA事件总线接收各类原始的告警事件,进行预处理后形成系统内部标准事件,而后进入过滤处理流程,包括闪断、规则等过滤,由于在前面监控系统中做了充分的闪断类事件处置,需要事件过滤工作不多;接着经过告警信息丰富增强后进入告警构建,处理到这个环节原始告警事件的数量被大幅压缩,仅剩余13.48%;生成的内部告警则进入聚合引擎分析处理,聚类及合并处理后生成真正需要关心处理的故障,仅占1.34%。
图6:DIA某项目智能告警各流程收敛效果分析
DIA平台还提供了历史告警的可视化自助分析能力,可以分析任意或组合维度的历史告警事件,了解各类告警的分布比例、变化趋势等,为科学运维运营工作提供得力的分析、决策工具。在紧急告警分析看板中,清晰了解紧急告警种类及细分子类分布,紧急告警种类按时间分布,从中可以看到数量较多的紧急告警:如WebLogic、xxx专线,其中WebLogic属于经常性紧急告警,xxx专线属于突发性的大批量告警;紧急告警细分子类分布图标显示需要优先调查的紧急告警细分子类,它可以明确有待优化的告警,如WebLogic的集群内存利用率。
图7:DIA某项目历史紧急告警可视化自助分析
DIA平台提供了早期事件检测功能,将告警数量减少到实际需要关注的告警数量,缩短了解决问题的平均时间。在危机时期,拥有这种由数据驱动的深入分析的能力将能够:
• 确定可能的根本原因;
• 确定必要的团队以快速纠正问题;
• 启用自动恢复;
• 降低平均检测时间,平均了解时间和平均解决时间。
DIA平台每天在最复杂的IT环境中,分析数百万个事件,机器学习对其进行分类并关联,可为IT事件管理和全栈可见性提供敏捷能力,通过主动的事件解决工作流,使运维团队可以更敏捷高效地工作,然后修复、优化那些可能导致中断或影响SLA的因素,来确保满足SLA,并使运营团队能够为数字化转型提供持续的保证。
如何启动AIOps建设计划
探索AIOps是否适合你的组织并不困难,以下是一些建议:
• 不要等
拿起材料学习是一个好的开始!即使还未立即开始试点项目,也要继续研究AIOps功能,你可能比预期更早需要AIOps。
• 从小开始
选择目标应用和服务。可以将AIOps定位于一两个数据基础比较好且有明显痛点的关键业务应用程序或服务开始进行创新场景试点。一次尝试做所有事情会不聚力且难以成功。
• 快速获胜
选择具有深厚AIOps专业知识和详细产品路线图的供应商,将AIOps瞄准可以实现的目标。例如告警压缩降噪和告警关联分析。随着实践范围的扩大和成熟,再添加根因分析和知识共享等功能。专注于1-3个关键指标进行衡量,根据需要调整计划并重新评估结果,确保结果符合你最初的目标和期望。
• 分享成功
提升业务服务可用性指标、改善客户体验,确保将成功的事件解决方案与业务收益切实关联,宣传并庆祝成功的选择和方案,让所有利益相关者知道创新的成果。AIOps的可观察性将持续提供服务保证的能力。
AIOps助力数字化转型
数字经济的发展对于时刻在线有了更高的要求。业务永续是现今企业的基本需求,企业增加业务效率的同时,正面临因科技不断发展所带来的挑战,还要跟上行业发展趋势以保持竞争力。
数字化转型正在使企业面对一个动态的、多功能的,同时又复杂的环境。数字化的出现改变了运营的本质。它引入了围绕服务可用性、性能和敏捷性的新需求,以满足业务需求和创新。AIOps是帮助团队不断获得现代IT观察能力的有效方法。数据中心的数字化转型相对风险更低、能力衔接支撑更有力,这里AIOps不仅仅可以是数字化转型的助力者, 甚至是数字化转型先行先试的引领者。