EMA analyst cover photo

OpenTelemetry:挑战、优先事项、采用模式和解决方案

OpenTelemetry 已成为云原生领域的主要参与者,旨在简化日益复杂的云原生可观测性领域。企业面临的重大挑战促使软件供应商之间达成广泛共识,采用统一的标准和框架进行遥测数据管理。应用开发者、DevOps 工程师、平台工程师和普通技术人员对 OpenTelemetry 兴趣和采用的指标快速增长,这证明了企业对此抱有广泛的热情。

主要事实

  • 快速增长。 OpenTelemetry 是 CNCF 增长最快的项目之一,获得了基础设施、应用程序和可观测性平台等众多供应商的支持。
  • 统一标准。 它为遥测数据的插桩、收集、处理和导出设定了统一标准。
  • 核心价值。 该平台的核心优势在于其作为应用程序和基础设施遥测的单一解决方案,简化了插桩和数据收集。
  • 插桩。 OpenTelemetry 的关键特性是其插桩库和自动插桩能力,这减少了开发人员的工作量并提高了数据准确性。
  • 社区参与。 该项目已有来自 1,200 家公司的 10,000 人贡献,每月约有来自 200 家公司的 900 名开发人员积极贡献——开发人员参与度同比增长 18%,公司参与度同比增长 22%。
  • 开发者吸引力。 Python 库下载量同比激增 445%(截至 2023 年 12 月达到 2100 万次下载),以及 Stack Overflow 上开发者讨论在两年内增长 410%,都表明开发者兴趣和采用度正在增长。

什么是 OpenTelemetry,为什么我们需要它?

在当今分布式、动态的云原生应用世界中,OpenTelemetry 是一个用于插桩、生成、收集、处理和导出遥测数据的统一标准和平台。在应用程序堆栈的所有领域标准化指标、跟踪、日志、事件和上下文信息的处理方式对企业有益,因为它统一并简化了可观测性数据管道的管理。

与此同时,OpenTelemetry 使可观测性软件平台供应商能够完全专注于提供可行洞察的核心价值主张,而无需花费大量资源来弄清如何获取可靠、全面且上下文良好的遥测数据。这些供应商将受益于 OpenTelemetry 项目持续的开发工作,例如添加性能配置文件以更深入地洞察系统行为,以及描述产生遥测数据实体的属性,例如服务、主机、容器或虚拟机。所有这些数据流结合起来,提供了揭示现代分布式、松耦合微服务应用程序(包括其底层基础设施堆栈)复杂交互所需的数据模型。

捕获这种上下文是让 AI 模型分析大量数据和向这些模型提供专注于重要数据点所需的所有背景信息之间的缺失环节。你可以将其比作向侦探提供案件的详细背景信息。没有上下文,侦探可能会错过关键线索和联系,导致不正确和/或延迟的结论。OpenTelemetry 为 AI 模型提供了必要的上下文,使它们能够专注于相关数据点,并做出更准确、更有洞察力的判断。这种富含上下文的遥测数据使 AI 模型能够有效分析现代分布式应用程序及其底层基础设施堆栈的复杂交互。这种分析对于组织根据预测的业务影响持续优化其技术投资至关重要。

“简而言之,它 [OpenTelemetry] 正迅速成为行业标准,并让您可以使用一种协议 (OTLP) 来处理指标、跟踪和日志,并且收集器仍然支持像 Prometheus 和 Zipkin 这样的旧协议。”

— 某大型汽车公司企业架构师

条形图突出了与可观测性相关的关键 GitHub 主题。OpenTelemetry 的高排名凸显了其在云原生社区中的重要性,众多开源项目与它集成。OpenTelemetry、Prometheus、Grafana 和 eBPF 位居云原生可观测性工具和平台列表前列。

Bar chart showing top OpenTelemetry topics in GitHub
来源:GitHub

OpenTelemetry 是一个开源项目,提供了一个全面的遥测数据收集工具包,并可作为直接来自 Kubernetes、Prometheus、eBPF 或大多数其他相关数据源的云原生健康和性能数据的导出目标。OpenTelemetry 作为 Grafana 的统一数据源,实现了对遥测数据的实时可视化、分析、洞察和警报。OpenTelemetry 在可观测性领域的突出地位,与 Prometheus、Grafana 和 eBPF 并列,凸显了其通过集成和全面的数据处理来简化和增强云原生可观测性的关键作用。

OpenTelemetry 在 GitHub 上的拉取请求同比增长超过 40%

Line graph showing rise of GitHub PRs for OpenTelemetry
来源:GitHub

Grafana 和 Prometheus 并行增长

Prometheus 和 Grafana 以相同的速度增长,因为它们在可观测性堆栈中相互补充,Prometheus 提供强大的指标收集,而 Grafana 提供高级的可视化能力。它们的组合使用实现了全面的监控、分析和警报,这对于维持云原生系统的性能和健康至关重要。

Topic map for Grafana and OpenTelemetry
主题图显示了基于 Stack Overflow 数据分析的 OpenTelemetry、Prometheus 和 Grafana 之间的关系。
Line graph showing GitHub stars for Prometheus and Grafana over time
来源:GitHub

关键产品如何协同工作

在云原生生态系统中,遥测数据流通常始于 Kubernetes,它是容器化应用程序环境的基石。Kubernetes 生成关于其托管应用程序及其底层基础设施的运营数据。这些数据包括资源使用、性能以及各种服务和工作负载的健康状况等指标。Prometheus,作为一种监控工具,随后介入收集这些指标。eBPF 是一种内核技术,可在 Linux 内核级别提供网络数据包过滤,它可以通过添加内核级别的洞察(例如网络流量和系统调用)来增强这些指标,从而提供对系统性能和安全性的更深入可见性。将 Prometheus 数据与 eBPF 数据结合起来可以显著增强云原生环境中的可观测性。例如,Prometheus 可以从 Kubernetes 托管的应用程序和基础设施中收集资源使用和性能指标。另一方面,eBPF 可以提供内核级别的洞察,例如网络流量和系统调用,从而更深入地了解系统性能和安全性。通过将 Prometheus 与 eBPF 数据集成,团队可以获得对其系统健康和性能的更全面视图。这种集成实现了遥测数据的实时可视化、分析和警报,从而能够做出更明智的决策和主动解决问题。

OpenTelemetry 随后接收、处理并聚合收集到的数据,并充当数据收集和可观测性之间的通道。OpenTelemetry 对遥测数据(指标、日志、跟踪和上下文数据)进行标准化,从而更轻松地处理来自 Prometheus 和 eBPF 的各种数据类型。这种标准化是进行一致和高效数据分析的关键。然后,Grafana 利用这些聚合数据提供可视化和仪表盘。Grafana 直接向 Prometheus 查询指标进行可视化,并使用 OpenTelemetry 处理的数据进行更高级的分析。这一步至关重要,因为它将复杂的数据转化为可行的洞察,让用户能够轻松解释数据并根据数据做出明智的决策。从 Kubernetes 经由 Prometheus、eBPF 和 OpenTelemetry 到 Grafana 的流程创建了一个简化的管道,确保了云原生环境中的高效监控、快速问题解决和有效决策。

驯服云原生生态系统

Kubernetes 已成为运行和管理应用程序的事实标准平台,与云原生生态系统中众多产品和组件深度集成。这种集成通过现有的企业技术和基础设施扩展了 Kubernetes 的能力。例如,Kubernetes 本身不原生访问存储,但利用存储插件连接到数据中心或公有云中的文件、对象或块存储。类似地,对于企业网络访问,Kubernetes 采用一组网络插件,促进 Pod 到 Pod 的通信、网络隔离、服务网络、负载均衡、入口 (ingress) 和出口 (egress) 控制。

Kubernetes 生态系统功能多样,支持广泛的操作,例如运行数据库、创建和管理服务网格、构建 CI/CD 流水线、发送通知以及监控系统性能。Kubernetes 中的数据库可以部署为所谓的有状态集合 (stateful sets) 并带有持久卷 (persistent volumes),确保数据在 Pod 重启和节点故障时的持久性。Istio 或 Linkerd 等服务网格增强了网络通信,提供了细粒度控制、安全性和可观测性等功能。

通过与 Argo、Flux、Jenkins、GitLab 和 Spinnaker 等工具集成,持续集成和持续部署 (CI/CD) 工作流程得到简化,自动化了部署过程,并将新的代码变更无缝集成到生产环境中。在如此复杂的云原生应用堆栈中,建立全面的可观测性至关重要。这包括从所有相关的内部 Kubernetes 组件和与 Kubernetes 集群集成的外部组件收集日志、指标、跟踪、事件和上下文数据。OpenTelemetry 为此目的提供了全面的框架,能够在 Kubernetes 集群内收集、处理和导出遥测数据。

Chart showing CNCF cloud native technologies by category
图表显示了 CNCF 云原生技术生态系统按类别划分。单个技术的大小取决于获得的 GitHub 星数(来源:CNCF)。

下一篇:OpenTelemetry 的工作原理