-javaagent:<javaagent>-Dotel.resource.attributes=service.name=<serviceName>,token=<token>-Dotel.exporter.otlp.endpoint=<endpoint>
-jar 之前。对于无法直接指定 JVM 启动参数的应用,-Dotel.resource.attributes 系统参数可以替换为 OTEL_RESOURCE_ATTRIBUTES 环境变量,-Dotel.exporter.otlp.endpoint 系统参数可以替换为 OTEL_EXPORTER_OTLP_ENDPOINT 环境变量。对应的字段说明如下:<javaagent> :探针对应的本地文件路径。<serviceName> :应用名,多个使用相同应用名接入的进程,在 APM 中会表现为相同应用下的多个实例。对于 Spring Cloud 或 Dubbo 应用,应用名通常和服务名保持一致。最长63个字符,只能包含小写字母、数字及分隔符“ - ”,且必须以小写字母开头,数字或小写字母结尾。<token> :步骤1中拿到业务系统 Token。<endpoint> :步骤1中拿到的接入点。/path/to/opentelemetry-javaagent.jar,应用名为 myService,业务系统 Token 为 myToken,接入点为 http://pl-demo.ap-guangzhou.apm.tencentcs.com:4317 为例,介绍不同环境的完整启动脚本:java -javaagent:/path/to/opentelemetry-javaagent.jar\\-Dotel.resource.attributes=service.name=myService,token=myToken\\-Dotel.exporter.otlp.endpoint=http://pl-demo.ap-guangzhou.apm.tencentcs.com:4317 \\-jar SpringCloudApplication.jar
{TOMCAT_HOME}/bin/setenv.sh 配置文件添加以下内容:CATALINA_OPTS="$CATALINA_OPTS -javaagent:/path/to/opentelemetry-javaagent.jar"export OTEL_RESOURCE_ATTRIBUTES=service.name=myService,token=myTokenexport OTEL_EXPORTER_OTLP_ENDPOINT=http://pl-demo.ap-guangzhou.apm.tencentcs.com:4317
<jetty_home\\>/bin/jetty.sh启动脚本中添加以下内容:JAVA_OPTIONS="$JAVA_OPTIONS -javaagent:/path/to/opentelemetry-javaagent.jar"export OTEL_RESOURCE_ATTRIBUTES=service.name=myService,token=myTokenexport OTEL_EXPORTER_OTLP_ENDPOINT=http://pl-demo.ap-guangzhou.apm.tencentcs.com:4317
-javaagent:"/path/to/opentelemetry-javaagent.jar"-Dotel.resource.attributes=service.name=myService,token=myToken-Dotel.exporter.otlp.endpoint=http://pl-demo.ap-guangzhou.apm.tencentcs.com:4317
<dependencies> <!-- 其他依赖 --> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-api</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>
import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.api.trace.Tracer; public class AcquireTracerDemo { public void acquireTracer() { // scope 用于定义埋点范围,一般情况下可以直接使用类名,关于Scope的更多信息,请参考 OpenTelemetry 官方文档 String scope = this.getClass().getName(); OpenTelemetry openTelemetry = GlobalOpenTelemetry.get(); Tracer tracer = openTelemetry.getTracer(scope); } }
import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.StatusCode; import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.context.Scope;// Trace 对象可以在业务方法中获取,或者通过参数传入业务方法public void doTask(Tracer tracer) {// 创建一个 Span Span span = tracer.spanBuilder("doTask").startSpan();// 在 Span 中添加一些 Attributesspan.setAttribute("RequestId", "5fc92ff1-8ca8-45f4-8013-24b4b5257666"); // 将此 Span 设置为当前的Span try (Scope scope = span.makeCurrent()) { doSubTask1(); doSubTask2(); } catch (Throwable t) {// 处理异常,异常信息将记录到 Span 的对应事件中 span.recordException(t);span.setStatus(StatusCode.ERROR); throw t; } finally {// 结束 Span span.end(); } }
<dependencies><!-- 其他依赖 --><dependency><groupId>io.opentelemetry</groupId><artifactId>opentelemetry-api</artifactId><version>1.35.0</version></dependency></dependencies>
Span span = Span.current(); // 通过静态方法获取当前 SpanString traceId = span.getSpanContext().getTraceId(); // 获取 TraceIdString spanId = span.getSpanContext().getSpanId(); // 获取 SpanIdspan.setAttribute("myKey", "myValue"); // 为当前的 Span 增加新的属性
主机 IP + 容器 IP 的形式。-Dotel.resource.attributes 中,加上 host.name 字段。-Dotel.resource.attributes=service.name=my_service,token=my_demo_token,host.name=10.10.1.1_192.168.1.2
文档反馈