OpenTelemetry概述

1前世

如果你常年在处理一些日志、监控方面的东西,一定会在一定程度上听过OpenTracing,像 Zipkin、Jaeger、SkyWalking都对其有很好的支持。但是可惜,OpenTracing已经成为过去式了,现在的APM(全称:Application Performance Management tools,应用程序性能管理工具)世界,由一种叫做OpenTelemetry的规范所统治。那是因为,作为一个标准,OpenTracing遇到了对手,下面我们就讲解下OpenTelemetry的前世。

1.1 OpenTracing

OpenTracing制定了一套平台无关、厂商无关的Trace协议,使得开发人员能够方便的添加或更换分布式追踪系统的实现。在2016年11月的时候CNCF技术委员会投票接受OpenTracing作为Hosted项目,这是CNCF的第三个项目,第一个是Kubernetes,第二个是Prometheus,可见CNCF对OpenTracing背后可观察性的重视。比如大名鼎鼎的Zipkin、Jaeger都遵循OpenTracing协议。

OpenTracing语义规范:https://github.com/opentracing/specification/blob/master/specification.md

OpenTracing项目组依据OpenTracing语义规范实现多种语言的sdk:https://github.com/opentracing

简单来说,OpenTracing通过文档形式定义好了一套平台无关、厂商无关的Trace协议, 然后OpenTracing项目组依据定义好的Trace协议实现多种语言的sdk,Zipkin、Jaeger等链路追踪工具都按照OpenTracing协议标准实现。

1.2 OpenCensus

OpenTracing诞生于2016年11月,成为CNCF基金会的第三个项目。但是google并不认为这个东西是标准,所以推出了自己的OpenCensus规范。

大家可能会想,既然有了OpenTracing,OpenCensus又来凑什么热闹?对不起,你要知道OpenCensus的发起者可是谷歌,也就是最早提出Tracing概念的公司,而OpenCensus也就是Google Dapper的社区版(在 2005 年,Google 在内部部署了一套分布式追踪系统 Dapper,并发表了一篇论文《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》,阐述了该分布式追踪系统的设计和实现,可以视为分布式追踪领域的鼻祖)。OpenCensus和OpenTracing最大的不同在于除了Tracing外,它还把Metrics也包括进来,这样也可以在OpenCensus上做基础的指标监控;还一点不同是OpenCensus并不是单纯的规范制定,他还把包括数据采集的Agent、Collector一股脑都搞了。OpenCensus也有众多的追随者,最近最大的新闻就是微软也宣布加入,OpenCensus可谓是如虎添翼。

简单来说,OpenCensus类似于OpenTracing也是一种规范,OpenCensus项目组依据OpenTracing规范实现多种语言的sdk:https://github.com/census-instrumentation

1.3 OpenTracing vs OpenCensus

可以看到,OpenTracing和OpenCensus从功能和特性上来看,各有优缺点,OpenTracing支持的语言更多、相对对其他系统的耦合性要更低;OpenCensus支持Metrics、从API到基础框架都实现了个便。所以从功能和特性上分不出高下。

1.4 OpenTelemetry

这可苦了开发者。难道一个技术场景需要两种规范?

终于在2019年5月, 两者和解,共同发起了OpenTelemetry开源项目,旨在提供可观测性领域的标准化方案,解决观测数据的数据模型、采集、处理、导出等的标准化问题,管理观测类数据,如trace、metrics、logs等,其终态是作为CNCF技术委员会可观测性的终极解决方案。OpenTelemetry项目的第一宗旨就是:兼容OpenTracing和OpenCensus。对于使用OpenTracing或OpenCensus的应用不需要重新改动就可以接入OpenTelemetry。

注意:新工程全部使用OpenTelemetry项目即可,无需考虑OpenTracing和OpenCensus标准,OpenTracing和OpenCensus相关项目目前已落下帷幕,不再更新。

2、OpenTelemetry核心工作

Telemetry是遥测的意思,可以看到OpenTelemetry的野心是非常大的。

OpenTelemetry可谓是一出生就带着无比炫目的光环:OpenTracing支持、OpenCensus支持、直接进入CNCF sanbox项目。但OpenTelemetry也不是为了解决可观察性上的所有问题,他的核心工作主要集中在3个部分:

  1. 规范的制定,包括概念、协议、API,除了自身的协议外,还需要把这些规范和W3C、GRPC这些协议达成一致;
  2. 相关SDK、Tool的实现和集成,包括各类语言的SDK、代码自动注入、其他三方库(Log4j、LogBack等)的集成;
  3. 采集系统的实现,目前还是采用OpenCensus的采集架构,包括Agent和Collector。
可以看到OpenTelemetry只是做了数据规范、SDK、采集的事情,对于Backend、Visual、Alert等并不涉及,官方目前推荐的是用Prometheus去做Metrics的Backend、用Jaeger去做Tracing的Backend。 
 

 

参考:https://www.51cto.com/article/665025.html

参考:https://zhuanlan.zhihu.com/p/74930691

参考:合并OpenTracing和OpenCensus的趋同路线图

posted @ 2022-09-22 22:20  人艰不拆_zmc  阅读(1377)  评论(0编辑  收藏  举报