Skip to content
Closed
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
96 changes: 96 additions & 0 deletions trace/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
# Tracing Infrastructure

This folder contains local tracing infrastructure for examples:

- YDB
- OpenTelemetry Collector
- Tempo
- Prometheus
- Grafana
- QueryService demo (`trace/application/query-service`, programmatic OTel)
- TableClientImpl demo (`trace/application/table-client-impl`, programmatic OTel)
- JDBC demo (`trace/application/jdbc-trace`, programmatic OTel + `enableOpenTelemetryTracer` on the URL)
- Spring Data JPA / Hibernate 6 (`trace/application/spring-data-jpa-v6-trace`, Spring Boot 3 + same OTel wiring)
- Spring Data JDBC (`trace/application/spring-data-jdbc-trace`, Spring Boot 3 + Flyway + same OTel wiring)

Application runners are located in:

- `trace/application/query-service/`
- `trace/application/table-client-impl/`
- `trace/application/jdbc-trace/`
- `trace/application/spring-data-jpa-v6-trace/`
- `trace/application/spring-data-jdbc-trace/`

Prerequisite for SDK snapshots:

```bash
mvn install -DskipTests
```

Trace applications are pinned to `ydb-sdk-*` version `2.4.1-SNAPSHOT`. Demos that use JDBC (`jdbc-trace`, Spring Data
modules) expect a matching `ydb-jdbc-driver` snapshot (see each module `pom.xml`); install it locally if it is not in
your cache.

Spring Kotlin examples use Kotlin **2.2.x** (compatible with JDK 25 build hosts).

Build trace applications locally (uses your local Maven cache with snapshots):

```bash
mvn -B -f trace/application/query-service/pom.xml clean package -DskipTests
mvn -B -f trace/application/table-client-impl/pom.xml clean package -DskipTests
mvn -B -f trace/application/jdbc-trace/pom.xml clean package -DskipTests
mvn -B -f trace/application/spring-data-jpa-v6-trace/pom.xml clean package -DskipTests
mvn -B -f trace/application/spring-data-jdbc-trace/pom.xml clean package -DskipTests
```

## Run

```bash
docker compose -f trace/compose-e2e.yaml up -d
```

## Run QueryService demo

```bash
docker-compose -f trace/compose-e2e.yaml run --rm query-service-trace
```

## Run TableClientImpl demo

```bash
docker-compose -f trace/compose-e2e.yaml run --rm table-client-impl-trace
```

## Run JDBC demo

```bash
docker-compose -f trace/compose-e2e.yaml run --rm jdbc-trace
```

## Run Spring Data JPA (v6) demo

```bash
docker-compose -f trace/compose-e2e.yaml run --rm spring-data-jpa-v6-trace
```

## Run Spring Data JDBC demo

```bash
docker-compose -f trace/compose-e2e.yaml run --rm spring-data-jdbc-trace
```

## Run demos

```bash
docker-compose -f trace/compose-e2e.yaml run --rm query-service-trace
docker-compose -f trace/compose-e2e.yaml run --rm table-client-impl-trace
docker-compose -f trace/compose-e2e.yaml run --rm jdbc-trace
docker-compose -f trace/compose-e2e.yaml run --rm spring-data-jpa-v6-trace
docker-compose -f trace/compose-e2e.yaml run --rm spring-data-jdbc-trace
```

## Stop

```bash
docker compose -f trace/compose-e2e.yaml down
```
13 changes: 13 additions & 0 deletions trace/application/query-service/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
FROM maven:3.9.11-eclipse-temurin-21 AS build
WORKDIR /workspace

COPY . .
RUN mvn -B -f trace/application/query-service/pom.xml clean package -DskipTests

FROM eclipse-temurin:21-jre
WORKDIR /app

COPY --from=build /workspace/trace/application/query-service/target/trace-query-service.jar /app/trace-query-service.jar
COPY --from=build /workspace/trace/application/query-service/target/libs /app/libs

ENTRYPOINT ["java", "-cp", "/app/trace-query-service.jar:/app/libs/*", "tech.ydb.trace.query.QueryServiceTraceApp"]
8 changes: 8 additions & 0 deletions trace/application/query-service/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# QueryService trace demo

This demo is a standalone Java application with programmatic OpenTelemetry setup.
It configures OTLP exporter in code and adds `GrpcTelemetry` interceptor to the YDB gRPC channel builder.

- Source style: `query-example` scenario (implemented locally in `trace/`)
- Main class: `tech.ydb.trace.query.QueryServiceTraceApp`
- Service name in traces: `ydb-query-service-example`
97 changes: 97 additions & 0 deletions trace/application/query-service/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>tech.ydb.examples</groupId>
<artifactId>ydb-sdk-examples</artifactId>
<version>1.1.0-SNAPSHOT</version>
<relativePath>../../../pom.xml</relativePath>
</parent>

<artifactId>trace-query-service</artifactId>
<name>Trace QueryService Demo</name>

<properties>
<ydb.sdk.version>2.4.1-SNAPSHOT</ydb.sdk.version>
<opentelemetry.version>1.58.0</opentelemetry.version>
<kotlin.version>2.2.20</kotlin.version>
</properties>

<dependencies>
<dependency>
<groupId>tech.ydb</groupId>
<artifactId>ydb-sdk-query</artifactId>
</dependency>
<dependency>
<groupId>tech.ydb.auth</groupId>
<artifactId>yc-auth-provider</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</dependency>

<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-api</artifactId>
</dependency>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-sdk</artifactId>
</dependency>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-exporter-otlp</artifactId>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version>
</dependency>
</dependencies>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>tech.ydb</groupId>
<artifactId>ydb-sdk-bom</artifactId>
<version>${ydb.sdk.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-bom</artifactId>
<version>${opentelemetry.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<build>
<finalName>trace-query-service</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>libs/</classpathPrefix>
<mainClass>tech.ydb.trace.query.QueryServiceTraceApp</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
Loading
Loading