有奖捉虫:行业应用 & 管理与支持文档专题 HOT
OpenTelemetry 是工具、API 和 SDK 的集合。使用它来检测、生成、收集和导出遥测数据(指标、日志和跟踪),以帮助您分析软件的性能和行为。本文将介绍如何使用 OpenTelemetry 上报 Java 应用数据。

步骤一:获取接入点和 Token

进入 应用性能监控控制台 应用监控 > 应用列表页面,单击接入应用,在接入应用时选择 Java 语言与 OpenTelemetry 的数据采集方式。 在选择接入方式步骤获取您的接入点和 Token,如下图所示:


上报方式说明
内网上报:使用此上报方式,您的服务需运行在腾讯云 VPC 。通过 VPC 直接联通,在避免外网通信的安全风险同时,可以节省上报流量开销。
外网上报:当您的服务部署在本地或非腾讯云 VPC 内,可以通过此方式上报数据。请注意外网通信存在安全风险,同时也会造成一定上报流量费用。
OpenTelemetry Java SDK 是 OpenTelemetry Java Agent 实现的基础,提供了丰富的自定义能力。当 OpenTelemetry Java Agent 的埋点不满足您的场景或者需要增加一些自定义业务埋点时,可以使用以下方式接入。

步骤二:下载 opentelemetry-javaagent.jar

下载 Java agent — opentelemetry-javaagent.jar



步骤三:修改上报参数

修改 Java 启动的 JVM 参数上报链路数据。
-javaagent:/path/to/opentelemetry-javaagent.jar    //请将路径修改为您文件下载的实际地址。
-Dotel.resource.attributes=service.name=<appName>,token=<token>
-Dotel.exporter.otlp.endpoint=<接入点>
说明
如果您选择使用 OpenTelemetry Collector 转发,则需删除 -Dotel.exporter.otlp.headers=Authentication=<token> 并修改<接入点>为您本地部署的服务地址。

步骤四:引入 Maven POM 依赖

<dependencies>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-api</artifactId>
</dependency>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-sdk-trace</artifactId>
</dependency>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-exporter-otlp</artifactId>
</dependency>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-sdk</artifactId>
</dependency>
</dependencies>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-bom</artifactId>
<version>1.9.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

步骤五:获取 OpenTelemetry Trace

SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(BatchSpanProcessor.builder(OtlpGrpcSpanExporter.builder()
.setEndpoint("<接入点>")
.addHeader("Authentication", "<token>")
.build()).build())
.build();

OpenTelemetry openTelemetry = OpenTelemetrySdk.builder()
.setTracerProvider(sdkTracerProvider)
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
.buildAndRegisterGlobal();

Tracer tracer = openTelemetry.getTracer("instrumentation-library-name", "1.0.0");


步骤六:启动您的应用

查看应用数据

登录 应用性能监控控制台 ,在应用列表中即可查看性能数据。