mirror of
https://github.com/Dannecron/spring-boot-demo.git
synced 2025-12-25 16:22:35 +03:00
enable distribution otlp tracing
This commit is contained in:
@@ -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
|
||||||
@@ -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")
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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}
|
||||||
|
|||||||
Reference in New Issue
Block a user