您的提交成功发送!关闭

可观测性是什么?

可观察性是设计良好的软件系统的一个关键特性。你的系统是可观察的,如果你能知道它是否按预期工作,如果不是,谁受到影响,影响有多严重,问题是什么以及它们来自哪里。

可观测性与监控

而是通过监视实现的可观察性

术语“监视”有时用来表示度量的收集和处理,特别是时间序列。相反,我们将监视定义为收集和处理有用的遥测技术以洞察系统行为的行为和实践。

在当前的软件实践中,特别是在分布式系统和云原生软件中,监视是实现可观察性的常见方法。像Prometheus、OpenTelemetry、Jaeger、Elasticsearch或Graylog这样的工具通过收集和处理各种遥测类型(如度量、分布式跟踪和日志)来记录软件系统的相关工作。

当您收集的遥测技术和处理它的方式使您能够及时地了解和调查您的软件系统是如何运行的,发生了什么问题以及它们的影响是什么。

阅读我们的《可观察性与监控之争:一种不敬的观点》一篇深入探讨“可观察性vs.监控”争论的博客文章。

监测和遥测类型

在今天的开源监控实践中,有几种类型的遥测技术正在被收集:


指标

度量是系统属性的相关度量的集合。在监视范围内,通常将度量作为具有数值(即与时间戳关联的数字)的时间序列数据收集,比如在最近一分钟内使用某个状态码服务的请求数量。除了数值时间序列外,现在布尔时间序列也很常见,比如“服务X是否启动”,以及其他使用类似字符串的值来表示的时间序列,例如“在y时刻配置X的值”。


日志

日志,结构化(通常作为JSON对象)或非结构化(作为遵循某种模式的纯文本),都是带有时间戳的条目,记录事件的发生,如“发现以下错误”或“支付流程已完成”。


分布式的痕迹

分布式跟踪记录了各种系统在处理特定请求时所做的工作,比如为Web页面提供服务或执行批处理作业。如今,大多数分布的轨迹被建模为一棵跨度树。跨度类似于结构化日志,每一个描述一些处理,比如“服务请求XYZ”或“查询数据库123”,有一个持续时间来报告执行处理需要多长时间,并且以子-父关系的形式与其他跨度有层次关系。通常,多个系统的贡献跨越到一个分布式跟踪,范围从API服务器到数据库和消息传递队列以及中间的(微)服务。


真实用户监控

真正的用户监控是关于通过Web页面、移动应用程序(有时是物联网设备)等界面收集有关用户会话的数据;真正的用户监控与分布式跟踪密切相关,在分布式跟踪中,用户会话与一个或多个分布式跟踪相关,每个跟踪都描述了,例如,一个资产或XHR请求是如何服务于用户界面的。


综合监测

合成监控检查是关于持续、定期地测试系统(主要是生产系统),以确保特定的api或ui中的整个用户流(如检查过程)能够按照预期工作;换句话说,合成监控检查是对api的冒烟测试。

遥测相关更深刻的见解

充分利用您的度量、日志、分布式跟踪等

当它们相互关联时,各种遥测类型为您提供了更深入的了解。

例如,Prometheus范例允许您使用一些样本分布式跟踪标识符来标记度量,这样您就可以深入到一些影响特定度量的跟踪中。

遥测技术的另一个常见关联是将跟踪上下文标识符添加到日志的元数据中,这样您就可以从查看单个日志到查看事件中涉及的所有组件和服务的整个执行流。

遥测上下文

遥测技术的一个经常被低估的方面是它的背景;也就是说,遥测技术来自哪个系统,该系统在哪里运行,以及,这个遥测技术和其他技术之间的关系(或缺乏关系)是什么。您可以将此视为将遥测技术与被监视系统的拓扑结构相关联。

遥测上下文越来越多地通过标记进行编码:向时间序列指标、日志、分布式跟踪等添加一致的、经过管理的标记,这样就可以过滤由特定时间间隔内的特定机器、进程或其他系统组件生成的所有可用遥测。

遥测上下文的另一个重要功能是在处理来自不相关部署的类似遥测时避免混淆或直接错误。例如,人们可能想为生产数据库定义的大多数警报规则应该集中在特定区域的特定集群上,而不是“当我所有MySQL实例的95%的CPU使用率超过阈值时通知我”。

可控性:行动中的可观察性

被遗忘的双胞胎

可观测性的概念起源于现代控制系统理论领域,其表述经受住了时间的考验。它也不是一个独立的概念。相反,可观察性有一个孪生概念,称为可控性,它可以大致定义为:“系统调节自身和相关系统的属性,以在提供的输入条件下可靠地产生正确的输出。”

如今,可控性不是许多软件工程师日常使用的一个术语,但它的本质是由操作员体现出来的实现了护符或者其他框架,它们控制所操作的软件和底层基础设施,以提供无缝的配置管理,并实现可伸缩性、可靠性和优雅的降级。

了解更多关于模型驱动操作的信息

你知道吗?

可观测性的概念最早是由R. Kalman于1960年在现代控制系统理论领域提出的,其原始含义在很大程度上仍然适用于最近的软件,包括云本地应用程序。

准备好让你的应用被观察了吗?

Canonical可以通过安全修复和LTS支持支持您的开源可观察性堆栈,还可以可靠地、大规模地运行您最好的开源监视工具。

更多关于开源可观察性的信息
Baidu