什么是可观察性?

可观察性是根据系统生成的数据测量和推断系统当前状态的能力。 这些数据通常以日志、指标和跟踪的形式存在。 举一个简单的例子,您可以通过检查微服务应用的指标来观察其运行状况。

可观察性如何发挥作用?

可观察性为开发人员提供了复杂系统如何运行的整体视图。 通过数据收集、存储和分析,开发人员能够识别和解决系统中的问题。

可观察性始于实时收集数据。 然后将收集到的数据存储在集中位置以供分析。 该分析可以通过机器学习算法、可视化或统计技术的组合来完成。

该分析的结果会提醒开发人员应用或系统内的任何异常。 警报可以根据业务或应用需求,通过既定的阈值、严重程度或其他标准自动触发。 一旦识别并定位异常,开发人员就可以使用数据来调试和解决问题。

可观测性数据示例

如上所述,可观测性数据的主要类型是日志、指标和跟踪。

  • 日志——带有元数据的带时间戳的文本记录。 这些记录或消息通常由应用或系统生成。 日志记录是软件开发中实现可观察性的最常用方法之一。
  • 指标——在运行时捕获的有关服务的测量值。 这些数值测量包括 CPU 使用率、内存使用率和错误率。 所有这些测量均跟踪应用或系统的性能和健康状况。
  • 痕迹——请求或操作在分布式系统节点间移动的历程记录。 跟踪记录了请求的处理方式以及完成所需的时间。 这些数据有助于识别瓶颈和其他延迟问题。
监控与可观察性有何不同?

监控是观察和检查系统或应用内发生的进程的能力。 监控很大程度上依赖于指标。 简而言之,它提供了环境的可视化并使您能够针对已知问题进行测试。 另一方面,可观察性提供了新的、更深入的数据,让您可以推断可能存在问题。 然后,您可以深入研究问题的原因,以洞察未来。

监控和可观察性并不是截然分开的。 相反,它们是数据分析选项和可视化技术,使开发人员能够更快地获得洞察力。

在建立这些定义的基础上,下表将仔细研究软件applications中的监控和可观察性之间的四个细微的差别。 这四个差异分为范围、粒度、灵活性和分析。

 

  监控 可观察性
范围 测量指标(例如系统正常运行时间、CPU 使用率、错误率) 根据系统的输出了解其工作机制

粒度

定期汇总或抽样收集的数据(基于预定义的指标)

收集并分析精细数据,以更深入地了解和理解系统行为

灵活性

实施预定义的仪表板或警报阈值,一旦部署就很难修改

采用灵活且适应性强的方法,使用易于更改的工具来适应不断变化的情况和要求

分析

识别特定事件或异常并做出反应

通过为开发人员提供所需的工具来识别问题原因并逐步实施解决方案,强调主动分析和故障排除

遥测在可观测性中起什么作用?

软件可观测性中的遥测是指实时收集和传输有关软件系统性能和行为的数据的实践。 这些数据(响应时间、错误率、资源消耗等)用于监控和了解系统的当前状态,并帮助开发人员发现提高性能的机会。

在有关遥测的对话中, OpenTelemetry (OTel) 经常成为谈论的焦点,因为它提供了一种简化的方法,使开发人员更容易进行可观察性。 OTel 是一组开源工具和库,用于标准化从软件系统收集遥测数据(日志、指标和跟踪)。

您可以在《OpenTelemetry 如何改变我们追踪和设计应用程序的方式》中了解有关 OTel 的更多信息以及它如何影响云原生格局。

可观察性的好处

可观察性使开发人员能够更好地了解他们的applications,从而实现:

  • 更快的调试——详细的分析数据加快了开发人员诊断和调试系统问题的能力。
  • 更好的性能——监控关键指标和识别阻碍因素有助于开发人员做出数据驱动的决策,以提高应用的性能。
  • 提高可靠性——可观察性数据使开发人员能够主动解决可能破坏用户体验的系统故障。
  • 更好的协作——随着时间的推移,一组标准的数据使团队能够根据一组通用的指标轻松地合作解决问题。
可观察性的缺点

可观察性确实存在一些缺点,最常见的包括:

  • 增加开销——实现可观察性可能意味着增加用于跟踪应用或系统指标的专用工具的成本,以及需要提供额外的数据存储。
  • 增加复杂性——需要额外的仪器和监控,并且容纳这些额外的工具会使应用更加复杂。
  • 信息过载——可观察性会产生大量数据,这些数据很快就会使团队难以管理,而且过多的数据会让他们难以确定哪些问题的优先级需要立即解决。
其他资源

NGINX 很荣幸能够提供有关可观察性和 OTel 的额外免费教育资源:

博客