可观测性体系建设五步心法:明业务、立规范、采数据、显特征、获洞见

可观测性体系建设可以按明业务、立规范、采数据、显特征、获洞见五步推进。本文从业务指标、SLI/SLO、数据采集、特征呈现和故障止损洞见梳理建设路径。

作者 秦晓辉

笔者做监控 11 年,在可观测性领域创业 4 年,与各类客户沟通较多,发现很多企业想要建设可观测性体系,但是不得章法,我把整个建设过程做了一个简单总结,梳理一下其中的脉络,希望对你有所启发。

整个可观测性体系建设,我总结为五个步骤:明业务、立规范、采数据、显特征、获洞见

核心要点

  • 可观测性建设不要从工具开始,要先从业务目标、北极星指标和关键用户路径开始。
  • 规范越早建立,后面批量采集、展示、告警、复盘和知识复用越省事。
  • 采数据不是“能采多少采多少”,而是围绕未来排障价值、成本和统一规范采集指标、日志、链路、事件、Profiling。
  • 显特征的目标,是把海量观测数据组织成趋势、聚合、关系和异常模式。
  • 获洞见的目标,是形成止损依据,帮助团队知道故障方向、影响范围和下一步动作。
步骤 要回答的问题 典型产物
明业务 哪些业务结果异常才算真故障 北极星指标、关键过程指标、P1 系统清单
立规范 数据、标签、告警、SLO 如何统一 指标/日志/Trace 规范、告警规则原则、数据协议
采数据 哪些观测数据值得采,成本如何控制 指标、日志、链路、事件、Profiling 采集链路
显特征 数据如何被人快速理解 仪表盘、日志 pattern、告警聚合、灭火图
获洞见 如何从特征得到止损依据 故障定位路径、影响判断、复盘输入

下面挨个说明。可观测性体系涉及的内容太过驳杂庞大,本文更多是说明思路,不涉及实操。

明业务

首先,要把您的业务梳理明白。理清楚您的最终业务目标和指标,通常称为北极星指标,举例:

  • 电商系统:订单量、订单金额等
  • 游戏:在线人数、交易金额等
  • 视频播放:点击 Play 的次数等

简单而言,就是把老板层面(全公司层面)关注的指标理清楚,如果这些指标出现异常(比如下跌),可能就是重大业务故障,SRE、DEV 都要及时介入处理。

北极星指标通常是一些结果性质的指标,如果要做的更精细化,还应该拆解出过程指标,比如电商系统的订单量,我们就要分析,哪些关键环节影响订单量,哪些过程指标可以衡量客户主流程(下订单)健康与否,比如:

  • 客户登录次数、登录失败次数
  • 浏览商品的次数、浏览商品的响应速度
  • 添加购物车的次数、成功率、延迟
  • 结算次数、结算失败次数、结算延迟
  • 等等

理清楚这些关键的结果指标和过程指标之后,进而从技术角度,就要梳理看哪些系统、模块影响了这些指标,这些系统就应该定义为 P1 级别的系统,重点保障。这些 P1 级别的系统的 SLI、SLO 数据就要重点管理起来。

这一步的本质,是先定义“什么叫业务真的出问题”,再讨论监控哪些技术对象。如果业务指标没有定义清楚,后面再多 CPU、内存、接口、日志和 Trace,也很难判断事故优先级。

立规范

如果公司较小,微服务数量 20 个以下,机器只有几十台,规范与否大家感受不深。如果微服务上千、机器过万,那感受就深了。如果规范做得好,就可以批量干很多事情,很多知识也都是复用的。

从可观测性角度,可能需要立规范的一些点:

  • 统一使用哪个指标、日志、链路追踪的系统
  • 日志打印方式
  • 各类观测数据的标签
  • 微服务自身暴露哪些可观测性数据,以及如何暴露
  • 变更事件如何统一收集呈现
  • SLI、SLO 数据统一梳理、呈现、告警
  • 告警规则的制定原则、分派规则
  • 数据协议规范格式
  • 等等

立规范这个事情,做得越靠前,后面越省事,高阶架构师做过很多横向的体系设计,通常会把可观测性这摊事做得比较靠前,因为系统的可观测性和系统的可用性、鲁棒性类似,都是系统必须要关注的特性之一。

规范不是为了写文档好看,而是为了让系统变多、团队变多、数据变多以后,仍然可以批量治理。没有统一标签、数据协议和告警原则,后面做大盘、订阅、聚合、SLO 和故障复盘都会变成手工活。

采数据

各类观测数据(指标、日志、链路、事件、Profiling)的采集,要按照前面制定的规范走,要考虑成本、考虑数据未来的价值。对于各类中间件、数据库,因为都是通用产品,采集哪些指标、日志,重点关注哪些数据,在业内通常可以找到最佳实践,而对于公司自研的那些微服务,就稍微麻烦一些了。需要:

  • 梳理自身业务,确定暴露哪些数据才能方便未来排查问题
  • 从上到下推动埋点,否则难以落地

采数据最容易走偏的地方,是只看“能不能采到”,不看“以后能不能用上”。真正要优先采的,是能帮助判断业务影响、定位系统对象、还原变化过程、解释用户体验的数据。

显特征

这里的特征,指的是数据特征。海量的零散的观测数据,人类是没法一条一条查看的,要想从数据中获取有价值的信息,很难。需要我们有效组织数据,从中发现一些特征规律。举一些例子:

  • 把指标数据放到折线图里,可以看到趋势特征,可以看到最大最小值,可以看到哪个时间有突变,就是典型的从数据中提取特征
  • 把较大量的日志,通过聚类算法计算日志 pattern,比如 10000 条日志,最终提取出 20 条 pattern,这样用户更容易理解分析
  • 把告警事件按照标签做聚合,通常是按照告警规则标题做聚合,或者按照 region、severity、env、service 等做聚合
  • 把近期的变更事件和关键告警放在一个图上,可以从时间维度较为容易分析告警和变更的关系
  • 把微服务按照层级聚合为子系统,然后聚合为系统,发生故障之后,就可以方便知道哪些系统受到影响,确认影响范围
  • 等等

从具体工具上来看,比如 Grafana、Flashcat 等,都是有力工具,帮助用户快速发现数据特征。

显特征不是简单把数据画出来,而是把数据组织成可决策的信息。趋势图、聚合结果、拓扑关系、变更叠加、异常卡片,都应该服务同一个目标:让值班人少翻数据,多看到方向。

获洞见

可观测性体系要解决的最大的场景需求,就是故障定位,进而执行止损动作。通过数据特征,我们最终要得到的洞见,就是“止损依据”!用户通常需要建立各种视图,通过视图分析数据特征,进而综合分析,得到“止损依据”。

比如用户访问电商 App 延迟较高,我们可能要分析:

  • 容量水位数据
  • 变更数据
  • 依赖的服务的健康状况
  • 基础网络
  • 等等

通过特征分析,来确认对应的方向是否有问题,综合多个方向的分析结论,最终得到故障的原因,知道原因了也就知道如何止损了。

这里的洞见不是玄学,也不是 AI 自动给一个结论。它来自已经组织好的数据特征:哪些指标异常、哪些服务受影响、近期发生过什么变更、依赖对象是否健康、影响面是否扩大。洞见最终要落到止损动作上。

FAQ

可观测性体系建设应该先买工具还是先梳理业务?

先梳理业务。工具只能承载数据和流程,不能替团队定义哪些业务指标异常才算真故障。业务目标、北极星指标和 P1 系统不清楚,工具接入越多,噪音越多。

指标、日志、链路、事件和 Profiling 是否都要一次性建设?

不建议一开始追求全量。可以围绕核心业务链路优先建设最能支撑故障发现和定位的数据,再逐步补齐。采集动作要考虑成本和未来排障价值。

SLI/SLO 应该放在哪一步?

SLI/SLO 的目标来自“明业务”,口径依赖“立规范”,数据来自“采数据”,展示和告警依赖“显特征”,最终服务“获洞见”和稳定性治理。因此它不是单独一步,而是贯穿五步。

总结

本文提纲挈领梳理了可观测性体系建设的五步法:明业务、立规范、采数据、显特征、获洞见。

第一性原理很简单:可观测性不是为了采更多数据,而是为了在业务异常时更快判断影响、更快定位方向、更快形成止损依据。只能算是一个梗概,希望对你有所帮助。我们创业这些年,一直聚焦在监控、可观测性领域,深知这个领域的驳杂,如果你需要乙方协助构建整套体系,欢迎联系我们

本文作者秦晓辉,监控领域从业 11 年,Open-Falcon、Nightingale 开源项目创始人,极客时间专栏《运维监控系统实战笔记》作者,现为 Flashcat 联合创始人,创业中。

延伸路径

继续看解决方案和产品对比

如果你正在做监控、可观测性或故障定位相关选型,建议从解决方案和产品对比继续往下看。

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云