首先我们应用可以创建这些链路信息的前提是:使用了OpenTelemetry提供的javaagent,这个 agent 的原理是在运行时使用了byte-buddy增强了我们应用的字节码,在这些字节码中代理业务逻辑,从而可以在不影响业务的前提下增强我们的代码(只要就是创建 span、metrics 等数据) Spring 的一些代理逻辑也是这样实现的 gRPC 增强原理 而...
当完成 OTel Java Agent 各方面的调研之后,我们会发现他的很多设计都是领先的,一章节提到的那些代码设计和技巧、埋点方式等帮助我们打开了新的思路,可以解决很多困扰许久的问题。OTel Java Agent 的蓬勃发展成为了一个促使我们进行一次大规模重构最合理的契机,再考虑到拥抱开源、拥抱标准的基本原则,于是我们在 2023 ...
Java Agent可以解决这个问题。具体原理大家可以上网上查找,但有一个重要功能,是可以在类加载的时候,把某个类替换成用户改写后的类。transmittable-thread-local也提供了Java Agent的无侵入解决方案,在执行jar前加一段相应的命令即可: java -javaagent:/transmittable-thread-local/2.12.1/transmittable-thread-local-2.12...
只是每个应用都需要使用我这边单独打的 agent 包以及一个extension(tel-extensions-custom-context-1.0-SNAPSHOT.jar) 才能生效。 最终的效果如下: Baggage 在讲具体的实现之前需要先了解几个 Trace 中的概念,在这里主要用到的是一个称为 Baggage 的对象。 在之前的文章中其实提到过它的原理以及使用场景: 从Dapper ...
在Java 中的 Log4j 和 Logback 都有提供对应的实现。 如果我们使用了 OpenTelemetry 提供的 javaagent 再配合 logback 或者 Log4j 时就会自动具备打印 MDC 的能力: 复制 java-javaagent:/Users/chenjie/Downloads/blog-img/demo/opentelemetry-javaagent-2.4.0-SNAPSHOT.jar xx.jar ...
OpenTelemetry作为一个分布式追踪的项目,他支持非常多的语言,如Java,Golang,Python等,鉴于笔者的主力语言为Java,并且后续需要介绍OpenTelemetry的Java Agent实现,所以后续文章中的相关知识点都以Java或者Java Sdk的方式为主。 初识OpenTelemetry 在微服务广泛发展和使用的当下,对于整个微服务体系的使用情况的观察以及服务依赖调...
OpenTelemetry 实战:从零实现分布式链路追踪 对于支持自动埋点的语言就很简单,只需要配置下 agent 即可;而原生的 Go 语言不支持自动埋点就得手动使用 OpenTelemetry 提供的 SDK 处理一些关键步骤;总体来说也不算复杂。 背景 之前写过一篇从 Dapper 到 OpenTelemetry:分布式追踪的演进之旅的文章,主要是从概念上讲解了...
OpenTelemetry Java Instrumentation(OJI)是OpenTelemetry系列中的一个项目,它基于Java Agent实现了无侵入式的OpenTelemetry接入。OJI的项目结构相对复杂,但一旦掌握,将大大简化二次开发的过程。 OJI使用Gradle进行依赖管理,核心依赖和仓库信息都包含在根目录下的settings.gradle.kts文件中。开发者在进行二次开发时,需要在这个...
阅读3.1k更新于2023-01-01 骑牛上青山 1.2k声望22粉丝 « 上一篇 OpenTelemetry系列 (四)| 如何使用Java Agent来实现无侵入的调用链 下一篇 » OpenTelemetry日志体系 引用和评论 被1篇内容引用 SegmentFault 2023 年社区周报 Vol.1
OpenTelemetry Java 代理是一个独立的进程,可为 Java 应用程序提供自动检测和跟踪功能,而无需更改任何代码。它的工作原理是在运行时附加到 Java 应用程序并拦截方法调用以收集遥测数据(例如跟踪和指标)。 该代理位于仪表化应用程序和后端系统或可观测平台之间,允许集中且简化的遥测数据处理。