使用 API 手动埋点除了使用注解的方式来实现埋点之外,我们还可以使用 OpenTelemetry 提供的 API 来实现手动埋点,这样我们就可以更加精细的控制我们的 span 了,当然这样也会增加我们的代码量,但就不需要使用 java agent 了 。
在 Java 应用中,要实现手动埋点,首先第一步是获取 OpenTelemetry 接口的实例,我们需要尽早在应用程序中配置一个 OpenTelemetrySdk 的实例,我们可以使用 OpenTelemetrySdk.builder()
方法来完成这个操作 。然后可以通过返回的 OpenTelemetrySdkBuilder
实例获取与信号、跟踪和指标相关的提供程序,以构建 OpenTelemetry 实例 。我们可以使用 SdkTracerProvider.builder()
和 SdkMeterProvider.builder()
方法来构建 Provider
。此外还强烈建议将 Resource
实例定义为生成遥测数据的实体的表示;特别是 service.name
属性是最重要的遥测源标识信息的一部分 。
当然我们需要先在应用中添加相关依赖库,代码如下所示:
<!-- pom.xml --><project> <dependencyManagement> <dependencies> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-bom</artifactId> <version>1.29.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-api</artifactId> </dependency> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-sdk</artifactId> </dependency> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-exporter-otlp</artifactId> </dependency> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-semconv</artifactId> <version>1.29.0-alpha</version> </dependency> </dependencies></project>
在 pom.xml
文件中添加了 opentelemetry-api
、opentelemetry-sdk
、opentelemetry-exporter-otlp
、opentelemetry-semconv
这几个依赖库,其中 opentelemetry-semconv
是用来定义一些常用的属性的,比如 service.name
、http.method
、http.status_code
等,当然现在我们就不需要 opentelemetry-instrumentation-annotations
这个依赖库了 。
在 Spring Boot 项目中,初始化 OpenTelemetry 的一种常见方法是使用 @Configuration
类 。这样的类会在 Spring Boot 应用启动时自动运行,使得初始化工作更加集中和组织化 。
我们这里创建一个如下所示的
推荐阅读
- 通过诗经楚辞取的公司名字
- 动量定理的应用 动量定理的应用视频讲解
- 深入浅出、玩转Java多线程
- 揭秘十个必知的 JavaScript 3D 库,打造顶级3D炫酷效果!
- 图灵测试已死!ChatGPT通过人类考试也不算,超强AI评估新秀「逻辑谜题」
- 王者荣耀的段位排行榜是通过Redis实现的?
- 我不再写Javascript了
- Java 单元测试及常用语句
- 构建高效的Java网络应用,体验秒级响应
- 谷歌推出 AlloyDB AI,帮助开发者创建生成式 AI 应用