opentelemetry-javaagent.jar。-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> <version>1.35.0</version> </dependency></dependencies>
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 中添加一些 Attributes span.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
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70041360/viewspace-3029356/ ,如需转载,请注明出处,否则将追究法律责任。