Skip to content

Commit 2a57c95

Browse files
authored
docs: instructions for using OpenTelemetry tracing (#178)
Signed-off-by: chenhuan <[email protected]>
1 parent 450fce8 commit 2a57c95

File tree

2 files changed

+137
-0
lines changed

2 files changed

+137
-0
lines changed

README.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,74 @@ public class Main {
112112
}
113113
```
114114

115+
### Tracing with OpenTelemetry
116+
117+
To enable distributed tracing with OpenTelemetry in opengemini-client-java:
118+
119+
1.Add dependencies:
120+
121+
```xml
122+
<dependency>
123+
<groupId>io.opentelemetry</groupId>
124+
<artifactId>opentelemetry-api</artifactId>
125+
<version>${opentelemetry.version}</version>
126+
</dependency>
127+
<dependency>
128+
<groupId>io.opentelemetry</groupId>
129+
<artifactId>opentelemetry-exporter-jaeger-grpc</artifactId>
130+
<version>${opentelemetry.version}</version>
131+
</dependency>
132+
```
133+
134+
2.Configure tracer and register interceptor:
135+
136+
```java
137+
import io.opentelemetry.api.OpenTelemetry;
138+
import io.opentelemetry.api.common.Attributes;
139+
import io.opentelemetry.api.trace.Tracer;
140+
import io.opentelemetry.exporter.jaeger.JaegerGrpcSpanExporter;
141+
import io.opentelemetry.sdk.OpenTelemetrySdk;
142+
import io.opentelemetry.sdk.resources.Resource;
143+
import io.opentelemetry.sdk.trace.SdkTracerProvider;
144+
import io.opentelemetry.sdk.trace.export.BatchSpanProcessor;
145+
import io.opentelemetry.semconv.ResourceAttributes;
146+
import io.opengemini.client.api.Configuration;
147+
import io.opengemini.client.api.Address;
148+
import io.opengemini.client.interceptor.OtelInterceptor;
149+
import java.util.Collections;
150+
151+
public class TracingExample {
152+
public static void main(String[] args) {
153+
// Create OpenGemini client
154+
Configuration configuration = Configuration.builder()
155+
.addresses(Collections.singletonList(new Address("127.0.0.1", 8086)))
156+
.build();
157+
OpenGeminiClient openGeminiClient = new OpenGeminiClient(configuration);
158+
159+
// Configure OpenTelemetry tracer
160+
JaegerGrpcSpanExporter exporter = JaegerGrpcSpanExporter.builder()
161+
.setEndpoint("http://localhost:14250")
162+
.build();
163+
164+
SdkTracerProvider tracerProvider = SdkTracerProvider.builder()
165+
.addSpanProcessor(BatchSpanProcessor.builder(exporter).build())
166+
.setResource(Resource.create(
167+
Attributes.of(ResourceAttributes.SERVICE_NAME, "opengemini-client-java")
168+
))
169+
.build();
170+
171+
Tracer tracer = OpenTelemetrySdk.builder()
172+
.setTracerProvider(tracerProvider)
173+
.build()
174+
.getTracer("opengemini-client-java");
175+
176+
// Register interceptor
177+
OtelInterceptor otelInterceptor = new OtelInterceptor();
178+
otelInterceptor.setTracer(tracer);
179+
openGeminiClient.addInterceptors(otelInterceptor);
180+
}
181+
}
182+
```
115183
## Contribution
116184

117185
Welcome to [join us](CONTRIBUTION.md)

README_CN.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,75 @@ public class Main {
111111
}
112112
}
113113
```
114+
115+
### 使用OpenTelemetry进行链路追踪
116+
117+
在opengemini-client-java中启用OpenTelemetry分布式追踪:
118+
119+
1.添加依赖:
120+
121+
```xml
122+
<dependency>
123+
<groupId>io.opentelemetry</groupId>
124+
<artifactId>opentelemetry-api</artifactId>
125+
<version>${opentelemetry.version}</version>
126+
</dependency>
127+
<dependency>
128+
<groupId>io.opentelemetry</groupId>
129+
<artifactId>opentelemetry-exporter-jaeger-grpc</artifactId>
130+
<version>${opentelemetry.version}</version>
131+
</dependency>
132+
```
133+
134+
2.配置追踪器并注册拦截器:
135+
136+
```java
137+
import io.opentelemetry.api.OpenTelemetry;
138+
import io.opentelemetry.api.common.Attributes;
139+
import io.opentelemetry.api.trace.Tracer;
140+
import io.opentelemetry.exporter.jaeger.JaegerGrpcSpanExporter;
141+
import io.opentelemetry.sdk.OpenTelemetrySdk;
142+
import io.opentelemetry.sdk.resources.Resource;
143+
import io.opentelemetry.sdk.trace.SdkTracerProvider;
144+
import io.opentelemetry.sdk.trace.export.BatchSpanProcessor;
145+
import io.opentelemetry.semconv.ResourceAttributes;
146+
import io.opengemini.client.api.Configuration;
147+
import io.opengemini.client.api.Address;
148+
import io.opengemini.client.interceptor.OtelInterceptor;
149+
import java.util.Collections;
150+
151+
public class TracingExample {
152+
public static void main(String[] args) {
153+
// 创建 OpenGemini 客户端
154+
Configuration configuration = Configuration.builder()
155+
.addresses(Collections.singletonList(new Address("127.0.0.1", 8086)))
156+
.build();
157+
OpenGeminiClient openGeminiClient = new OpenGeminiClient(configuration);
158+
159+
// 配置 OpenTelemetry tracer
160+
JaegerGrpcSpanExporter exporter = JaegerGrpcSpanExporter.builder()
161+
.setEndpoint("http://localhost:14250") // Jaeger 收集器地址
162+
.build();
163+
164+
SdkTracerProvider tracerProvider = SdkTracerProvider.builder()
165+
.addSpanProcessor(BatchSpanProcessor.builder(exporter).build()) // 批量处理 span
166+
.setResource(Resource.create(
167+
Attributes.of(ResourceAttributes.SERVICE_NAME, "opengemini-client-java") // 设置服务名称
168+
))
169+
.build();
170+
171+
Tracer tracer = OpenTelemetrySdk.builder()
172+
.setTracerProvider(tracerProvider)
173+
.build()
174+
.getTracer("opengemini-client-java");
175+
176+
// 注册拦截器
177+
OtelInterceptor otelInterceptor = new OtelInterceptor();
178+
otelInterceptor.setTracer(tracer);
179+
openGeminiClient.addInterceptors(otelInterceptor);
180+
}
181+
}
182+
```
114183
## 贡献
115184

116185
欢迎[加入我们](CONTRIBUTION_CN.md)

0 commit comments

Comments
 (0)