Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,74 @@ public class Main {
}
```

### Tracing with OpenTelemetry

To enable distributed tracing with OpenTelemetry in opengemini-client-java:

1.Add dependencies:

```xml
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-api</artifactId>
<version>${opentelemetry.version}</version>
</dependency>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-exporter-jaeger-grpc</artifactId>
<version>${opentelemetry.version}</version>
</dependency>
```

2.Configure tracer and register interceptor:

```java
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.exporter.jaeger.JaegerGrpcSpanExporter;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.resources.Resource;
import io.opentelemetry.sdk.trace.SdkTracerProvider;
import io.opentelemetry.sdk.trace.export.BatchSpanProcessor;
import io.opentelemetry.semconv.ResourceAttributes;
import io.opengemini.client.api.Configuration;
import io.opengemini.client.api.Address;
import io.opengemini.client.interceptor.OtelInterceptor;
import java.util.Collections;

public class TracingExample {
public static void main(String[] args) {
// Create OpenGemini client
Configuration configuration = Configuration.builder()
.addresses(Collections.singletonList(new Address("127.0.0.1", 8086)))
.build();
OpenGeminiClient openGeminiClient = new OpenGeminiClient(configuration);

// Configure OpenTelemetry tracer
JaegerGrpcSpanExporter exporter = JaegerGrpcSpanExporter.builder()
.setEndpoint("http://localhost:14250")
.build();

SdkTracerProvider tracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(BatchSpanProcessor.builder(exporter).build())
.setResource(Resource.create(
Attributes.of(ResourceAttributes.SERVICE_NAME, "opengemini-client-java")
))
.build();

Tracer tracer = OpenTelemetrySdk.builder()
.setTracerProvider(tracerProvider)
.build()
.getTracer("opengemini-client-java");

// Register interceptor
OtelInterceptor otelInterceptor = new OtelInterceptor();
otelInterceptor.setTracer(tracer);
openGeminiClient.addInterceptors(otelInterceptor);
}
}
```
## Contribution

Welcome to [join us](CONTRIBUTION.md)
69 changes: 69 additions & 0 deletions README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,75 @@ public class Main {
}
}
```

### 使用OpenTelemetry进行链路追踪

在opengemini-client-java中启用OpenTelemetry分布式追踪:

1.添加依赖:

```xml
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-api</artifactId>
<version>${opentelemetry.version}</version>
</dependency>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-exporter-jaeger-grpc</artifactId>
<version>${opentelemetry.version}</version>
</dependency>
```

2.配置追踪器并注册拦截器:

```java
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.exporter.jaeger.JaegerGrpcSpanExporter;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.resources.Resource;
import io.opentelemetry.sdk.trace.SdkTracerProvider;
import io.opentelemetry.sdk.trace.export.BatchSpanProcessor;
import io.opentelemetry.semconv.ResourceAttributes;
import io.opengemini.client.api.Configuration;
import io.opengemini.client.api.Address;
import io.opengemini.client.interceptor.OtelInterceptor;
import java.util.Collections;

public class TracingExample {
public static void main(String[] args) {
// 创建 OpenGemini 客户端
Configuration configuration = Configuration.builder()
.addresses(Collections.singletonList(new Address("127.0.0.1", 8086)))
.build();
OpenGeminiClient openGeminiClient = new OpenGeminiClient(configuration);

// 配置 OpenTelemetry tracer
JaegerGrpcSpanExporter exporter = JaegerGrpcSpanExporter.builder()
.setEndpoint("http://localhost:14250") // Jaeger 收集器地址
.build();

SdkTracerProvider tracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(BatchSpanProcessor.builder(exporter).build()) // 批量处理 span
.setResource(Resource.create(
Attributes.of(ResourceAttributes.SERVICE_NAME, "opengemini-client-java") // 设置服务名称
))
.build();

Tracer tracer = OpenTelemetrySdk.builder()
.setTracerProvider(tracerProvider)
.build()
.getTracer("opengemini-client-java");

// 注册拦截器
OtelInterceptor otelInterceptor = new OtelInterceptor();
otelInterceptor.setTracer(tracer);
openGeminiClient.addInterceptors(otelInterceptor);
}
}
```
## 贡献

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