赵志浩
Published on 2023-06-20 / 34 Visits
0
0

7、Opentelmetry 的 ios sdk 和 Skywalking 构建完整的串联

https://skywalking.apache.org/docs/main/v10.1.0/en/setup/backend/zipkin-trace/#lens-ui

skywalking 服务端可以接收 OpenTelmetry sdk 直接上报 OTEL 的格式数据,或者 Zipkin 的数据格式。

但是 Skywalking 服务端接收到这类数据后,只会直接进行存储,以及提供针对这类数据的查询接口;

而不会解析这类数据;针对这类数据可以直接通过,Skywalking 的:http://127.0.0.1:8080/zipkin 这个路径去查看;

这个路径实际是 Skywalking 的 webui 又内嵌了一份 Zipkin 的 ui,由这个 ui 通过 Skywalking 提供的查询接口,去查询原Zipkin 上报的数据格式数据。


由于Skywaling 本身并不会去解析 Zipkin 的数据,所以 Zipkin 的数据是无法和 Skywalking 的链路进行串联的。


比如,我当前采用 Opentelmetry 的 ios sdk,构建完对应的链路,export 导出数据时导出为 jaeger 的数据格式;

此时这批数据,由 Skywalking 的服务端采用 jaeger 的 receiver(接收器)进行了接收。

然后该 APP 端请求服务端应用时,服务端是采用的Skywalking 的 Agent 构建的链路,这部分链路也是会发送到 Skywalking 的服务端进行存储。

但是 Skywalking 只会解析自己的格式数据,在自己的 UI 上进行展示。

此时 APP 端的链路是无法和云端的链路进行串联在一起的。


如果需要将 APP 端链路请求和云端的链路请求全部串联在一起,最好的方案还是统一一套 收集器(server)

如:APP 端采用 Opentelmetry SDK
云端采用 OpenTelmetry Agent

两边的数据都是发给 OpenTelmetry 的 Collect;

此时的数据串联是完全没问题的;

然后由 Jaeger 来提供 UI 展示即可。


https://mp.weixin.qq.com/s/28EkjCIKfWWsdzEBB_Z0Kg

看到这个文章,发现 Opentelmetry 的 collecter 也支持了针对 skywalking 的 receiver

也就是 Skywalking 的 agent 上报的 Skywalking 的数据格式,可以通过这个 receiver 进行解析为 OpenTelmetry 的格式,然后再由 Opentelmetry 将该数据进行解析存储。


我本地的几个 case 路径:

1、/Users/zhihaozhao/IdeaProjects/observable/observable-learn/opentelemetry-java-examples-main

这个是 opentelmetry 的官方示例。

对应的仓库地址是:https://github.com/open-telemetry/opentelemetry-java-examples/tree/main/otlp

2、/Users/zhihaozhao/docker/skywalking-apm-10.1.0/apache-skywalking-apm-bin/bin

本地安装了一个 10.1.0 的版本,路径是这个;

3、/Users/zhihaozhao/IdeaProjects/observable/observable-learn/observable-learn

这个是本地项目接入 Skywalking 的 agent

原创声明:作者:赵志浩、个人博客地址:https://zhaozhihao.com

原创声明:笔名:陈咬金、 博客园地址:https://www.cnblogs.com/zh94/


Comment