OpenTelemetry 和可观测性简介

导航至

云原生和微服务架构在性能、可扩展性和可靠性方面带来了许多优势,但它们也可能带来复杂性。请求在服务之间移动会使调试更具挑战性,并且过去许多应用程序监控规则不再适用。云服务本质上是短暂的,容器不断地启动和关闭,这使得情况更加复杂。

因此,我们看到了向可观测性的转变,这使开发人员不仅知道他们的应用程序存在问题,而且还提供了足够的软件可见性,使他们能够弄清楚问题所在以及如何在将来预防它。

OpenTelemetry 是一个使收集可观测性数据(如指标、日志和跟踪)更容易的工具。OpenTelemetry。在本文中,您将了解 OpenTelemetry、它帮助解决的一些问题以及周围的可观测性生态系统。

什么是 OpenTelemetry?

OpenTelemetry 是各种工具、API、SDK 和规范的开源集合,其目的是标准化如何建模和收集遥测数据。OpenTelemetry 来自 OpenCensus 项目(由 Google 赞助)和 OpenTracing 项目(由 CNCF 赞助)的合并,并得到了世界上许多最大科技公司的支持。积极为该项目做出贡献的一些公司包括微软、红帽、谷歌、亚马逊、Shopify、Datadog 和 Facebook。

OpenTelemetry 目前是 CNCF 最活跃的第二大项目,仅次于 Kubernetes,可以追溯到去年,根据 CNCF Velocity 数据跟踪器,拥有超过 1000 名贡献者。

CNCF-project

为什么要使用 OpenTelemetry?

选择是否在应用程序中包含工具涉及许多因素,但其中两个最重要的因素是

  • 该项目是否为您的应用程序提供真正的价值

  • 与替代解决方案相比,项目的活跃度和生态系统

第一个因素涉及确定将项目与您的软件集成所付出的努力或使用该项目所产生的任何额外复杂性是否值得它创造的价值。在可观测性和通用应用程序监控方面,对于创建可靠的软件几乎是强制性的,因此任何可以使收集可观测性数据(如指标、日志和跟踪)更容易的工具都是必不可少的。

一旦您确定某种类型的工具值得使用,那么就归结为确定可用解决方案中哪个选项是最佳的。在 OpenTelemetry 之前,开发人员可用于收集可观测性数据的选项要么是供应商提供的,这会导致供应商锁定,要么需要组合多个不同的开源项目来收集指标、日志和跟踪。

OpenTelemetry 解决了这两个问题,首先它是开源的,并将收集与存储分离,因此您可以完全控制数据的处理方式。第二个问题通过 OpenTelemetry 为所有类型的可观测性数据提供规范和实现来解决,因此实现得到了简化和简化。

选择 OpenTelemetry 而不是潜在替代方案的另一个好处是生态系统和社区。如前所述,OpenTelemetry 现在是 CNCF 最活跃的项目之一,并且有许多主要的科技公司采用并为该项目做出贡献。这意味着您不必担心该项目的长期状态,并且可以知道随着时间的推移,将会不断改进并添加新功能。

OpenTelemetry 用例

OpenTelemetry 收集的数据有许多不同的用例。以下是其中的一些

  • 软件监控 - 可观测性数据最明显的用途是监控您的软件并确保一切正常运行,如果不能从应用程序的所有级别访问数据,则可以更轻松地调试和解决问题。

  • 优化 - 可观测性数据使识别瓶颈和其他影响应用程序性能的区域变得更容易。随着时间的推移,这些数据可用于提高应用程序的效率并节省基础设施成本。

  • 安全 - 可观测性数据可用于实时安全监控,并用于检测异常和其他可能表示安全漏洞的活动。

  • 开发者生产力 - 将可观测性数据用作部署管道的一部分,使软件工程师能够更快、更自信地推送新功能。

您可以在此视频中了解更多用例

如何处理您的可观测性数据

OpenTelemetry 处理收集和传输您的数据,但要从数据中获得真正的价值,您将需要其他工具。让我们看一下您可以使用数据的一些方法以及一些可用的选项。

数据存储

关于您的可观测性数据,您需要做的第一个决定是如何存储它。虽然任何数据库都可以用于存储,但可观测性数据由于是 时间序列数据 而在属性上有些独特。更通用的数据库没有针对常见类型的查询和时间序列数据的一般生命周期进行优化。

如果您希望优化可扩展性、查询性能并最大限度地降低存储数据的成本,那么可能值得考虑 时间序列数据库 (TSDB)。以下是使用时间序列数据库存储 OpenTelemetry 数据的一些优势

  • 可扩展性 - 时间序列数据库针对处理大量写入进行了优化,并且许多数据库都具有开箱即用的功能,例如 复制 和分片。

  • 性能 - TSDB 针对分析时间序列数据常见的独特查询类型进行了优化。这些查询对于标准数据库来说很难处理,因为它们来自 OLTP 与 OLAP 频谱的两端。例如,开发人员希望定期对所有运行的服务器进行非常广泛的查询,以获取其在某个时间段内的当前指标,然后如果特定服务器出现问题,则仅分析该特定服务器的数据。列式数据库 将难以处理第一个查询;基于行的数据库将难以处理第二个查询。时间序列数据库旨在处理这两个查询。

  • 开发者生产力 - TSDB 具有许多内置功能,这些功能对于处理可观测性数据很有用。您无需花费开发人员时间在通用数据库上构建这些功能,而是可以开箱即用。这些功能包括降采样、保留策略和为处理时间序列数据而设计的查询语言。

  • 成本节省 - 由于上述功能,使用时间序列数据库将通过提高效率来节省硬件方面的资金,并允许您的开发人员专注于构建对用户产品价值至关重要的功能。

除了时间序列数据库之外,还有其他可用于可观测性的选项,这些选项可能根据您的特定用例而有用。如果您需要强大的全文搜索功能用于日志分析,那么 搜索数据库 是有意义的。如果您想分析架构中不同服务之间的关系,那么 图形数据库 针对此进行了优化。要记住的关键是平衡向应用程序添加和管理新数据存储的复杂性与其提供的优势,并确定权衡是否值得。

数据分析

一旦您拥有了可观测性数据存储,您可能希望对其进行一些处理,而不仅仅是让它闲置。逻辑上的第一步是构建一些仪表板,用于 可视化 您的数据并对其进行监控。完成此操作后,您可以尝试 分析 您的数据并生成以前可能隐藏的见解,甚至尝试根据您的数据进行 预测 和预测。

自动化

在开始收集数据并可能通过一些人工干预运行一些基本分析之后的下一步是开始根据您的可观测性数据采取自动化操作。使用 OpenTelemetry 收集的数据,可以跨软件开发周期的所有阶段实现自动化。诸如 ArgoFlux 之类的工具可用于构建具有诸如金丝雀测试、蓝绿部署和自动回滚等功能的部署管道。这使您的开发人员能够更快地推送到生产环境,并确信如果出现任何问题,您将由于 OpenTelemetry 收集的数据而快速知道,并且这些更改可以恢复而不会影响用户。一旦部署了软件,您的遥测数据就可以通过利用云的灵活性来根据观察到的流量趋势和利用率来扩展服务的伸缩,从而使您的软件更有效率。

结论

可观测性继续获得开发人员的关注和采用,而 OpenTelemetry 有潜力充当将供应商和开源项目的整个可观测性生态系统联系在一起的粘合剂。作为开发人员,至少对 OpenTelemetry 有一些了解是值得的。