NGINX.COM
Web Server Load Balancing with NGINX Plus

可观测性(observerability)是指根据系统生成的数据来衡量和推断系统当前状态的能力。这些数据通常是日志、指标和跟踪类型的数据。举个简单的例子,您可通过查看微服务应用的指标数据来观测其健康状况。

 

可观测性有何作用?

可观测性有助于开发人员全面了解复杂系统的运行情况。通过数据收集、存储和分析,开发人员能够快速发现并解决其系统中的问题。

实现可观测性从实时收集数据开始,然后集中存储收集到的数据,以便进行分析。该分析可通过机器学习算法、可视化或一系列统计技术的叠加组合来完成。

所得的分析结果能够提醒开发人员注意应用或系统中的任何异常情况,并可按照既定阈值、严重程度或基于业务或应用需求的其他标准自动触发警报。在发现异常情况并进行定位后,开发人员便可使用这些数据来调试和解决问题。

 

可观测性数据示例

如上所述,可观测性数据的主要类型是日志指标链路

  • 日志(log) — 带时间戳的文本记录,包含元数据。这些记录或消息通常由应用或系统生成。日志记录是软件开发中实现可观测性的最常见方法之一。
  • 指标(metrics) — 在运行时捕获的有关服务的度量值。这些度量值包括 CPU 使用率、内存使用率和错误率。所有这些度量指标都是在跟踪应用或系统的性能和健康状况。
  • 链路(trace) — 用于记录请求在分布式系统节点中的移动过程或任一操作。链路会记录对于请求的处理方式以及完成请求所用的时间。这些数据有助于确定瓶颈路段及其他延迟问题。

 

监控与可观测性不同吗?


监控(monitoring)
是观测并检查系统或应用内的进程进度的能力。监控的实现很大程度上依赖于指标数据(metrics)。简而言之,监控能够提供环境的可视化,并支持您针对已知问题进行测试。而可观测性则提供了更深层次的新数据,便于您推断潜在问题。然后您可以深入探究问题原因,以洞察未来发展趋势。

监控和可观测性没有明显的差别,均为数据分析的可选方式以及可视化技术,可帮助开发人员更快地获取洞察。

在确定了监控和可观测性的定义后,下表将深入分析软件应用中两者之间的四个细微差别,包括范围、粒度、灵活性和分析目标。

监控

可观测性

范围

衡量指标(例如系统正常运行时间、CPU 使用率、错误率)

根据系统的输出信息了解其工作机制

粒度

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

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

灵活性

应用预定义的仪表盘或警报阈值(部署后很难修改)

使用灵活的自适应方法和易于更换的工具,以适应不断演变的情况和要求

分析目标

识别特定事件或异常情况并做出响应

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

 

遥测在可观测性方面发挥什么作用?

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

OpenTelemetry(Otel) 经常成为遥测相关对话的热议话题,因为它提供了一种简化方法,支持开发人员更轻松地进行观测。Otel 是一组开源工具和库,用于规范从软件系统收集遥测数据(日志、指标和跟踪)的流程。

如欲进一步了解 Otel 及其对云原生环境的影响,请参阅《OpenTelemetry 正在改变我们跟踪和设计应用的方式》。

 

可观测性的优势

可观测性能够帮助开发人员更好地了解其应用,从而实现:

  • 更快的调试速度 — 经过分析的详细数据可帮助开发人员更快速地诊断和调试系统问题。
  • 更高的性能 — 监控关键指标和确定阻碍因素有助于开发人员做出数据驱动型决策,从而提高应用性能。
  • 更高的可靠性 — 可观测性数据支持开发人员主动解决可能会损害用户体验的系统故障。
  • 更好的协作 — 日积月累的标准数据有助于团队间开展合作,基于一组统一的指标来解决问题。

 

可观测性的缺点

可观测性也有一些缺点,最常见的缺点包括:

  • 增加开销 — 实现可观测性可能意味着使用专用工具跟踪应用或系统指标,这将增加成本,而且还需要提供额外的数据存储。
  • 增加复杂性 — 需要额外的检测和监控,管理这些额外的工具会使应用变得更加复杂。
  • 信息过载 — 可观测性会生成大量的数据,这些数据很快就会成为团队的管理难题,而且过多的数据可能会使团队难以确定亟需解决的问题。

 

更多资源

NGINX 很高兴提供更多有关可观测性和 OTel 的免费学习资源:

博客

Tags

No More Tags to display