什么是OpenTelemetry?
OpenTelemetry是一个观测性框架和工具包,旨在创建和管理遥测数据,如追踪、指标和日志。OpenTelemetry是厂商和工具无关的,意味着它可以与各种观测性后端一起使用,包括像Jaeger和Prometheus这样的开源工具,以及商业解决方案。OpenTelemetry是一个Cloud Native Computing Foundation(CNCF)项目。
主要组件
OpenTelemetry包括以下主要组件:
- 用于所有组件的规范。
- 定义遥测数据形状的标准协议。
- 为常见遥测数据类型定义标准命名方案的语义约定。
- 定义如何生成遥测数据的API。
- 实现规范、API和遥测数据导出的语言SDK。
- 实现常见库和框架的仪表化的库生态系统。
- 无需更改代码生成遥测数据的自动仪表化组件。
- OpenTelemetry Collector:接收、处理和导出遥测数据的代理。
- 其他各种工具,例如OpenTelemetry Operator for Kubernetes、OpenTelemetry Helm Charts和用于FaaS的社区资产。
OpenTelemetry被广泛应用于许多已集成了OpenTelemetry以提供开箱即用的观测性的库、服务和应用程序。
OpenTelemetry得到来自40多家供应商的支持,其中许多供应商为OpenTelemetry提供商业支持并直接参与了该项目。
可扩展性
OpenTelemetry设计为可扩展。以下是一些扩展OpenTelemetry的示例:
- 向OpenTelemetry Collector添加接收器以支持来自自定义源的遥测数据。
- 将自定义仪表化库加载到SDK中。
- 创建针对特定用例定制的SDK或Collector的分发。
- 为尚不支持OpenTelemetry协议(OTLP)的自定义后端创建新的导出器。
- 为非标准上下文传播格式创建自定义传播器。
虽然大多数用户不需要扩展OpenTelemetry,但该项目几乎在每个级别都可以进行扩展。
为什么选择OpenTelemetry?
随着云计算、微服务架构和日益复杂的业务要求的兴起,对观测性的需求达到了前所未有的高度。观测性是通过检查系统的输出来理解系统的内部状态的能力。在软件的背景下,这意味着能够通过检查遥测数据来理解系统的内部状态,其中包括追踪、指标和日志。
为了使系统可观测,必须进行仪表化。即,代码必须生成追踪、指标和日志。然后,必须将仪表化的数据发送到一个观测后端。
OpenTelemetry做了两件重要的事情:
- 允许您拥有生成的数据,而不是被限定在专有的数据格式或工具中。
- 允许您学习一套独立的API和约定。
这两个结合起来使得团队和组织在当今现代计算世界中获得所需的灵活性。
历史
OpenTelemetry是两个先前项目OpenTracing和OpenCensus合并的结果。这两个项目都是为解决同一个问题而创建的:如何仪表化代码并将遥测数据发送到观测后端的标准缺失的问题。然而,这两个项目都不能完全解决这个问题,所以两个项目合并形成了OpenTelemetry,以便它们可以结合各自的优势并真正提供一个单一的标准。
如果您目前正在使用OpenTracing或OpenCensus,可以在这里了解如何迁移到OpenTelemetry。
OpenTelemetry不是什么
OpenTelemetry不是像Jaeger、Prometheus或商业供应商那样的观测性后端。OpenTelemetry关注于遥测数据的生成、收集、管理和导出。存储和可视化数据留给其他工具。
接下来做什么?
- 入门指南 — 马上开始吧!
- 了解OpenTelemetry的概念。