OpenTelemetry 是一组 APIs, SDKs,工具等集合,从而可以用于实现 traces 数据、监控数据和日志数据的生成和管理工具。OpenTelemetry 没有绑定到某一个固定的后端服务,通过配置你可以将它生成的各种数据发送给你希望的后端存储服务,它支持一些常见流行的开源项目,例如 Jaeger,Prometheus 等。
OpenTelemetry 能帮助我们做什么?
在云原生领域,分布式和多语言架构已经成为了一种常态。分布式架构其实也带来了一系列的挑战,例如如何快速解决服务的可用性和性能瓶颈等问题。而正是由于一些挑战,可观察性在云原生领域的重要性也在不断的提升。
对于一个可观测性的产品而言,遥测数据是它的核心。之前,这些遥测数据基本都是通过一些开源的项目或者商业供应商提供的采集库中生成的。但是由于缺乏统一的标准,导致生成的数据缺乏可移植性。同时,对于用户而言,需要使用多种采集库来采集数据,这给用户带来了一定的心智负担。
为了解决这些问题,OpenTelemetry 提供了一套与供应商无关的统一的解决方案,目前,OpenTelemetry 已经得到了云服务商、供应商和终端用户的广泛支持和采用。
OpenTelemetry 可以给你:
- 每种语言都提供了一个与后端(供应商)无关的采集库,支持自动或者手动来配置指标采集。
- 一个 collector 二进制文件用于收集数据,既可以作为网关使用,也可以作为 Agent 使用。
- 一套端到端的实现支持遥测数据的生成、发送、收集、处理和导出。
- 完全的可控性,可以通过配置的方式将你的遥测数据发送给若干个后端存储服务。
- 一个开放的统一标准,确保数据收集兼容所有供应商。
- 并行支持多种上下文传递的格式,从而可以随着标准的不断发展而轻松的进行迁移。
- 通过 shim 的机制兼容了 OpenTracing 和 OpenCensus,同时支持各种开源和商业协议、数据格式和上下文传播机制,因此,无论之前你是哪种用户,都能够快速的迁移到OpenTelemetry上。
OpenTelemetry 不做什么?
OpenTelemetry 不提供可观察的后端产品,例如 Jaeger 或者 Promethus。它支持导出数据到各种开源或者商业版本的后端存储。它采用了一种可插拔的架构,从而可以快速的扩展各种协议和数据格式的支持。