enable distribution otlp tracing

This commit is contained in:
Denis Savosin
2024-10-10 11:57:52 +07:00
parent a52f69ece5
commit d8b068917f
6 changed files with 31 additions and 3 deletions

View File

@@ -7,4 +7,6 @@ DB_SCHEMA=public
DB_USERNAME=postgres DB_USERNAME=postgres
DB_PASSWORD=postgres DB_PASSWORD=postgres
KAFKA_SERVERS=localhost:9095 KAFKA_SERVERS=localhost:9095
OTLP_TRACING_HTTP_URL=http://localhost:4318/v1/traces

View File

@@ -27,12 +27,15 @@ dependencies {
implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.15.4") implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.15.4")
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.4") implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.4")
implementation("io.github.optimumcode:json-schema-validator:0.2.3") implementation("io.github.optimumcode:json-schema-validator:0.2.3")
implementation("io.micrometer:micrometer-tracing-bridge-otel")
implementation("io.opentelemetry:opentelemetry-exporter-otlp")
implementation("net.logstash.logback:logstash-logback-encoder:8.0") implementation("net.logstash.logback:logstash-logback-encoder:8.0")
implementation("org.flywaydb:flyway-core:9.22.3") implementation("org.flywaydb:flyway-core:9.22.3")
implementation("org.jetbrains.kotlin:kotlin-reflect:2.0.20") implementation("org.jetbrains.kotlin:kotlin-reflect:2.0.20")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3") implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3")
implementation("org.postgresql:postgresql:42.6.2") implementation("org.postgresql:postgresql:42.6.2")
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0") implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0")
implementation("org.springframework:spring-aspects")
implementation("org.springframework.boot:spring-boot-starter-actuator:3.2.10") implementation("org.springframework.boot:spring-boot-starter-actuator:3.2.10")
implementation("org.springframework.boot:spring-boot-starter-mustache:3.2.10") implementation("org.springframework.boot:spring-boot-starter-mustache:3.2.10")
implementation("org.springframework.boot:spring-boot-starter-validation:3.2.10") implementation("org.springframework.boot:spring-boot-starter-validation:3.2.10")

View File

@@ -8,4 +8,4 @@ Some simple checklist for this demo repo:
- [x] make kafka consumer - [x] make kafka consumer
- [x] register prometheus metrics - [x] register prometheus metrics
- [x] expose prometheus metrics - [x] expose prometheus metrics
- [ ] add otel collector - [x] add otel collector

View File

@@ -14,6 +14,7 @@ services:
DB_USERNAME: $DB_USERNAME DB_USERNAME: $DB_USERNAME
DB_PASSWORD: $DB_PASSWORD DB_PASSWORD: $DB_PASSWORD
KAFKA_SERVERS: $KAFKA_SERVERS KAFKA_SERVERS: $KAFKA_SERVERS
OTLP_TRACING_HTTP_URL: $OTLP_TRACING_HTTP_URL
expose: expose:
- 8080 - 8080
- 8081 - 8081

View File

@@ -13,7 +13,11 @@ import com.example.demo.services.validation.SchemaValidator
import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.databind.SerializationFeature import com.fasterxml.jackson.databind.SerializationFeature
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
import io.micrometer.observation.ObservationRegistry
import io.micrometer.observation.aop.ObservedAspect
import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporter
import org.springframework.beans.factory.annotation.Autowired import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Value
import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.boot.context.properties.EnableConfigurationProperties
import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration import org.springframework.context.annotation.Configuration
@@ -50,5 +54,17 @@ class AppConfig(
@Bean @Bean
fun schemaValidator(): SchemaValidator = SchemaValidator(kafkaProperties.validation.schema) fun schemaValidator(): SchemaValidator = SchemaValidator(kafkaProperties.validation.schema)
@Bean
fun otlpHttpSpanExporter(@Value("\${tracing.url}") url: String): OtlpHttpSpanExporter {
return OtlpHttpSpanExporter.builder()
.setEndpoint(url)
.build()
}
@Bean
fun observedAspect(@Autowired observationRegistry: ObservationRegistry): ObservedAspect {
return ObservedAspect(observationRegistry)
}
} }

View File

@@ -59,4 +59,10 @@ management:
metrics: metrics:
distribution: distribution:
percentiles-histogram: percentiles-histogram:
"[http.server.requests]": true "[http.server.requests]": true
tracing:
sampling:
probability: 1.0
tracing:
url: ${OTLP_TRACING_HTTP_URL:http://localhost:4318/v1/traces}