有人能解释一下 OpenTelemetry 这类遥测方案解决了什么问题,和自己写两个 API 把数据存进 MongoDB 有什么区别吗?

查看 51|回复 5
作者:drymonfidelia   
你数据存了,打算怎么展示?自己写个 dashboard 么?
你自己的代码能写 API 存进去,其他的组件呢?中间件全自己写一遍么?
mooyo   
主要还是一个规范的统一, 比如传输的数据格式, 传输协议
RoccoShi   
你自己手撸追踪吗,你确定能解决好下面这个问题?
请求从进入服务器代码那一刻开始,算一个周期 A ,然后进入 controller 到出 controller 是一个周期 B 。B 是 A 的子周期,同时 controller 里调用 service 从开始到结束是另一个周期 C ,周期 C 是周期 B 的子周期。随着你服务的复杂,各种父子周期嵌套,你怎么处理记录这些数据,然后怎么写一套机制让 trace 能比较简单地能在你对应记录的起始和结束部分打点
最后一个请求里各种父子周期请求你怎么处理展示。这些都不是把数据塞进数据库就能解决的
而且 OpenTelemetry 除了展示,统一标准接口,还能和 aws xray 这些良好结合。我负责的几个项目就用了 xray ,挺不错的
BeautifulSoap   
1. OpenTelemetry 本质是技术标准,对数据设立规范,当然它也一并提供了很多工具,包括 SDK / Collector...
2. OpenTelemetry (暂时还)没有提供数据展示,因此不管你是自己直接 api 写数据,还是借助 OpenTelemetry Collector 中转,最终都需要一个 Backend 存储和展示数据,例如 Elasticsearch + Jaeger ,Tempo + Grafana ,MongoDB + ?
3. 当直接将数据写入 MongoDB 时,为了展示,你可能需要自己设计查询服务,也就是放弃了现成的说你上面各种方案;
4. 如果你用 OpenTelemetry ,它支持以 OTLP 协议(中转、)输出数据,也支持以 Jaeger 、Zipkin 等等各种协议输出数据,它是个万能的转换器;而 Jaeger 、Zipkin 等服务也同时支持了接收 OTLP 协议的数据,所以任何时候你不喜欢某个 Backend 时都可以切换;
5. OTLP 是 OpenTelemetry 定义的标准,所以它除了在开源项目中使用,也可以对接到云厂商,如果哪天你不想自建 Tracing 平台,想用云商的,OpenTelemetry Collector 输出的数据可以直接到云商,不用二次调整;如果你原来是用 API 写 MongoDB ,那你很显然要改,或者砸钱让云商帮你兼容。
一句话,OTel 是标准,是协议,是工具集。它存在的意义是让所有可观测性基础设施都对它支持和兼容,不仅仅是 Tracing ,还包括 Metrics 和 Logs 。换个例子,这与数据库为什么要和 SQL 配对是一个道理,你完全可以造一套自己的查询语言,不用 SQL ,但是当你未来想做些什么的时候会举步维艰。
RedisMasterNode   
@mooyo 可是 OpenTelemetry 也没有提供 dashboard 也没有提供中间件呀
drymonfidelia
OP
  
@drymonfidelia 有这样一个标准,自然有人去写 dashboard ,别人写的中间件只要遵循这个标准或者有相应的插件,也能无缝接入观测系统,难道你真打算全部手搓一遍?
您需要登录后才可以回帖 登录 | 立即注册

返回顶部