Java 应用通过 OpenTelemetry API 实现手动埋点( 二 )



Java 应用通过 OpenTelemetry API 实现手动埋点

文章插图
使用 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-apiopentelemetry-sdkopentelemetry-exporter-otlpopentelemetry-semconv 这几个依赖库,其中 opentelemetry-semconv 是用来定义一些常用的属性的,比如 service.namehttp.methodhttp.status_code 等,当然现在我们就不需要 opentelemetry-instrumentation-annotations 这个依赖库了 。
在 Spring Boot 项目中,初始化 OpenTelemetry 的一种常见方法是使用 @Configuration 类 。这样的类会在 Spring Boot 应用启动时自动运行,使得初始化工作更加集中和组织化 。
我们这里创建一个如下所示的 


推荐阅读