可观测性体系成熟度白皮书

白皮书简介

什么是可观测性,从传统监控到可观测性,Gap 到底有多大?构建和完善可观测性体系,有哪些最佳实践,应该从哪些维度入手和进阶,又如何判断企业的可观测性体系建设处于什么样的水平?欢迎下载《可观测性体系成熟度白皮书》,共同探讨。
下载

白皮书导读

什么是可观测性

可观测性(Observability)是一种软件开发和系统构建的哲学,是对系统内部状态及行为的度量和推断能力,通常包括日志、指标、链路追踪等多个度量维度。也就是说,在软件开发和运维领域中,可观测性是指对于一个复杂的系统,能够通过监控、日志、指标、追踪等手段,快速地发现、诊断、解决问题的能力。

In 1960, Kálmán introduced a characterization he called observability to describe mathematical control systems in his paper. In control theory, observability is defined as a measure of how well internal states of a system can be inferred from knowledge of its external outputs.

传统监控和可观测性,Gap有多大

从核心出发点来讲,传统的监控和可观测性,背后解决的是同样的问题,就是及时、准确的掌握系统的运行状况,提升对系统运行的控制能力。

传统监控的局限

  • 侧重于依赖“经验主义”,应对“已知问题”。
  • 经验主义,总是有限的,无法预知可能发生的各种未知的故障。
  • 告警驱动的传统监控,缺乏对故障的全局感知。
  • 传统监控认为,系统的开发者和系统的维护者,职责是相对分割的。
  • 传统监控面向的通常是基础设施,Metrics是传统监控的基础。

可观测性的前景

可观测性认为,你的应用是如何运行的以及是否在正确的运行,应该主动地、默认地通过 Metrics、Logging、Tracing、Events 等多种数据维度实时的暴露出来,然后通过工具进行可视化、告警、分析和数据洞察。对应用内部状态和行为的暴露,是系统设计之初就要考虑的重要组成,是系统功能不可分割的一部分。在可观测体系下,“埋点”是一种文化,应用的开发者承担着主体责任,系统的维护者反而作为数据的使用方存在。

以终端用户发起对服务端的一次请求为例,在该请求的整个生命周期内,尽可能多的细节都应该被记录下来,以便在未来的某个时刻用于 troubleshooting,这些细节数据可能包括:请求ID(request_id)、请求头(headers)、请求参数(parameters)、请求执行的时间(duration_time)、对下游的rpc调用(rpc_calls)、执行rpc调用的耗时、rpc调用的结果、环境变量、元信息(metadata)等等。在可观测体系下,这些数据都应该被实时的记录下来,并以结构化的形式存储。

相较于传统监控关注基础设施,可观测性强调面向”Application“。随着云原生架构和微服务模型的普及,现代化的应用出现了一些新的特点:

  • 相比单体应用,技术团队面临着更多的服务需要管理;
  • 很多服务之间都是松耦合,而且像云数据库、云存储、第三方API等服务,都不处于你的掌控之下;
  • 代码的发布和变更,频率越来越高,持续集成、持续发布成为主流;
  • 基础设施动态化,容量也在动态的弹性伸缩;
  • 相比单体应用,现代化的系统架构下,可能出现故障的点位越来越多,”长尾问题“出现的频率也越来越高,难以定位和分析;
  • 研发工程师更多的参与到系统的运行维护工作中来;

传统监控所依赖的”经验主义“越发显的经验不够用了,我们迫切需要构建一个”一劳永逸“的分析范式,他能够科学的分析和调查未知的问题。在这个分析范式下,不再重度依赖于”经验主义“,任何工程师都可以借助该范式,自助化的完成故障发现、故障定位、troubleshooting、性能优化等工作。

构建和完善可观测体系的 6 个阶段

完整内容,请点击上方的下载链接,下载《可观测性体系成熟度白皮书》,共同探讨和交流。

开源版
Flashcat
Flashduty