以可观测体系突破运维新困境
文章来源:《确定性运维专刊第6期》
一、背景介绍
华为P产品是借助云原生技术搭建起的千万级容量平台,随着其业务迅猛发展,平台对现网稳定性的要求越来越高。该产品以SaaS形式对外提供服务,涉及XX万用户与XXX万设备接入,业务可用度需达99.99%。为提升故障感知效率、缩短恢复时长,亟需构建支撑业务发展的可观测性体系。
挑战 1:复杂架构与数据孤岛
应用微服务化改造致使微服务数量呈指数级增长,调用层次与关系愈发冗长。分布式云原生的深度应用,进一步加剧业务链路复杂性。上层业务应用一旦出现故障,排障需涉及从应用到网络的完整链路,包括业务应用、云服务实例、中间件实例等。典型业务流量路径为:应用 > 容器 > PaaS 实例 > 虚拟机 > 虚拟网络。在实际运维中,业务应用日志、云资源监控指标、trace 数据等分散在独立工具中,形成运维数据孤岛,导致故障定位定界困难,故障恢复时长难以把控。
挑战 2:海量无效告警
云服务产生的资源告警量巨大,但告警有效性低且治理困难。运维人员难以从海量告警信息中迅速甄别高风险故障,常需在客户报障后才进行有效响应。
二、解决方案实践
1. 构建全链路可观测性体系
华为P产品在云原生演进中,着力构建基于“应用”视角的黄金指标体系。这一体系将“应用”视为独立逻辑实体,涵盖VM、Docker、中间件、数据库等应用所使用的全部资源。通过搭建完整的应用全链路监控,大幅提升业务故障管理能力,在核心场景实现“1 分钟感知、5 分钟定界、10 分钟解决、故障自愈”。
构建应用全链路监控极具价值:
- 主动发现故障,降低故障对业务的影响,增强系统稳定性与可靠性。
- 凭借逐层下钻的数据分析能力,快速定位并解决问题。
- 实时监测系统与数据分析,支撑决策,优化系统性能与资源利用率。
华为P产的指标体系建设,立足业务层面,通过监测、分析和理解数据,设计出能体现业务运行状况和用户体验的业务指标。该体系更注重运行过程、用户旅程和客户交互的可视化,助力SRE更好地把握业务健康状态。一旦黄金指标出现故障,意味着业务受损,需立即处理,这使SRE摆脱传统海量资源告警的困扰,专注于关键业务的稳定性工作。
- 华为P产品可观测性指标设计的参与角色
设计可观测性指标的前提是深入理解业务系统功能,这离不开应用开发人员、测试人员、运维人员组成的 “铁三角”。开发人员从白盒视角剖析系统功能实现逻辑,在开发阶段通过监控和日志手段预埋指标;测试人员站在用户体验角度设计测试用例,并梳理拨测类、规格类等黑盒化指标;运维人员则依据运维过程中出现的问题,持续优化指标。三方紧密配合,共同构建起完备的业务可观测指标体系。
- 业务可观测性指标设计步骤
指标体系搭建主要分成如下四个步骤:
1.数据调研,分解业务要素:指标设计人员将业务系统的功能进行拆解,梳理出业务核心功能点,每个功能点会产生的数据类型(结构化数据、日志、指标等),以及明确这些数据的作用。
2.梳理概念模型,构建总线矩阵:每个核心功能点识别之后,就需要开发人员对每个核心功能点的业务过程进行白盒化梳理,包括每个业务过程需要关注的数据维度,以及每个维度对应的字段。
3.逻辑模型设计:根据总线矩阵,进行数据仓库逻辑模型设计,在维度建模中,有以下一些关键概念和组件
事实表(Fact Table):事实表是数据仓库中的核心表,包含了与业务过程相关的数值型度量或指标。事实表中的每一行通常表示一个业务事件或交易,并与一个或多个维度表相关联。在实际应用时,应该尽量将来源于同一个业务过程的底层度量结果存储于一个维度模型中。
维度(Dimension):维度是描述业务过程的属性或特征,用于对事实进行分类和分组。
维度表(Dimension Table):维度表包含了描述事实表中度量的上下文信息,它们用于描述与“who、what、where、when、how、why”有关的事件,用于对事实进行分组和筛选的属性。
层次结构(Hierarchy):维度可以具有层次结构,即组织成多个级别的数据。例如,时间维度可以包含年、季度、月等层次。
度量 / 原子指标(Measure):原子指标和度量含义相同,是事实表中的数值型数据,表示业务过程的性能或结果,是用户在数据仓库中分析的关键指标。、
4.物理模型开发与上线:物理模型开发就是在逻辑模型中填充数据的过程,填充的数据就是在总线矩阵中定义的数据,这些数据的来源主要是业务系统的数据库、日志、调用链(本质上也是日志)、指标数据中。而这些数据并非结构化数据,需要经过清洗,汇聚到数据仓库的物理表中,才能够让指标设计人员对指标进行进一步处理(如打标签或者派生指标设计),最终完成业务可观测性指标上线
2. 构建智能运维数仓
要构建上述全链路可观测体系,关键是需要建立灵活、扩展性强、兼容性高的运维数仓,华为P产品基于华为云AppStage一站式运维平台,快速构建起可观测数据底座。
华为P产品运维过程中产生大量的运维数据,包括端侧数据、拨测网络数据、实例指标数据(Metrics)、日志数据(Logs)、调用链数据(Traces)等。这些运维数据需统一的运维数据仓库进行承载。运维数仓主要由数据集成、ETL、数据湖、MPPDB、数据应用等功能组件构成,实现如下能力:
数据集成:这些数据并非全部是结构化的数据,因此需要有完备的数据集成平台,支持多种运维数据接入(如消息队列、API集成、SFTP集成等)。
数据抽取:数据接入之后由ETL对单条数据进行过滤、切分、扩展、格式化等操作,统一放到消息队列中。
数据湖处理:不同的数据主体消费消息队列中的数据,完成不同的数据存储,如原始日志或者指标存放到OBS中、单条粒度数据直接入库或者通过格式定义存放到ClickHouse中、时序多维度量数据需要依据一定的数据治理规则分多个表保存在MPPDB中。
数据应用:所有运维数据治理完成之后,由数据应用对数据进行API封装,提供对外统一查询接口。
3. 基于全链路可观测能力构建自动化故障恢复能力
业务系统故障在运维人员得知根因的情况下,往往都能快速完成故障恢复,包括但不限于:双活流量切换、故障节点隔离、故障节点重启等等,但对于新手可能需要指导并不能独立完成。如果系统规模较大,那即使是经验丰富的SRE要完成准确的故障修复也并不容易。成熟的运维组织应该构建稳定可靠的自动化故障恢复能力。
故障根因修复手段是不断迭代积累的过程,华为P产品依托AppStage的EAP流程编排能力,结合应用的监控、告警、诊断结果等数据,构建起完整的故障恢复流程,当故障发生时可快速调用这些编排好的流程,即使是新手也可以快速完成故障的修复。
4. 依托全链路可观测构建在线SLO监测系统
由于全链路可观测体系的指标监控可覆盖到所有业务接口,那么即可通过对接口的实时监测进行业务可用度的测算。华为P产品通过对接口权重梳理识别,并针对性定义了接口成功率不可用的阈值,通过AppStage强大的数据编排能力构建起完整的SLO实时监测系统。
三、创新性经验
1. 打通数据孤岛,建立应用纬度的数据可观测体系
应用向云原生演进后,存在多种多样的工具与技术,工具之间数据割裂无法形成全局的视野,直接影响了应用运维的效率与效果。
华为P产品依托AppStage建立以应用视角的一体化数智运维平台,打通了业务日志、开源工具、调用链、云资源监控指标之间的数据壁垒,围绕应用纬度联动分析作为整体的全链路可观测体系的数据来源,使业务监控指标更加丰富,帮助SRE在故障发生时可通过逐层下钻快速对问题节点进行定界分析。
2. 构建在线可用度监测系统
复用全链路可观测体系构建起的丰富指标数据,提取关键接口成功率指标作为数据源,根据业务逻辑分析接口权重和不可用阈值,抽象统一计算模型后实现实时SLO监测能力。
3. 通过流程编排实现故障自恢复
将常见故障的运维恢复手段,通过流程编排能力固化到系统中,通过联动告警信息,自动化调用恢复流程实现故障的快速恢复,极大减少了MTTR。
四、应用成效
1.SLO达成99.99%,在应用纬度上达成核心场景“1分钟感知、5分钟定界、10分钟解决”的运维目标。打通log、metric、trace数据壁垒,按业务纬度构建XXX张监控报表,构建SaaS应用纬度的黄金指标监控大盘,完成XXXX项关键业务指标监控,并基于业务监控指标构建实时在线SLO监控能力。
2.基于AppStage一站式运维中心的异常检测、根因定界定位、RPA自动恢复能力,构建常见故障自动化恢复能力,有效降低MTTR,综合换算挽回人民币XXXX万。
五、总结与改进
通过AppStage一站式运维中心建立起的可观测性体系,除了在故障感知、定界、定位过程中使用外,也可以在灰度发布和混沌工程中充分发挥价值,这也是后续下一步的计划方向:
灰度发布:应用的灰度发布在流量控制切换的过程中,对于新老版本的现网实际表现如何,通常使用拨测来进行验证,但往往少量拨测无法呈现业务的真实状态。那么基于全链路可观测体系,可以把新老版本的现网黄金指标放在一张图表里,则可以有效实现对灰度版本的监测。下一步可以打通灰度服务与可观测能力的联动,发挥可观测能力在灰度过程中的价值。
混沌工程:混沌工程在故障注入的演练过程,故障的影响范围、系统的预期表现和实际指标表现,也可以整合可观测体系能力共同构建。在故障注入时,可以通过可观测指标,将演练过程时间范围内的相关指标、预期指标数据、实际指标数据都展现在同一报表中,方便运维人员评估演练预期是否达成,也避免了演练导致真实故障而运维人员无法感知的风险。
- 点赞
- 收藏
- 关注作者
评论(0)