diff --git a/spring-native/README.md b/spring-native/README.md index d4afae91c..8364ed81e 100644 --- a/spring-native/README.md +++ b/spring-native/README.md @@ -11,6 +11,7 @@ The example uses the following elements: the [OTLP receiver](https://github.com/open-telemetry/opentelemetry-collector/tree/main/receiver/otlpreceiver) and exporting to the standard output with the [logging exporter](https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter/loggingexporter). +- A spring configuration to suppress spans for the `/actuator` endpoint # Description of the instrumentation set-up @@ -147,4 +148,4 @@ spring-native-collector-1 | -> db.name: Str(db) spring-native-collector-1 | -> db.connection_string: Str(h2:mem:) spring-native-collector-1 | -> db.statement: Str(create table test_table (id bigint not null, primary key (id))) spring-native-collector-1 | -> db.system: Str(h2) -``` \ No newline at end of file +``` diff --git a/spring-native/build.gradle.kts b/spring-native/build.gradle.kts index 1607bfacb..033cfaaf3 100644 --- a/spring-native/build.gradle.kts +++ b/spring-native/build.gradle.kts @@ -13,8 +13,12 @@ dependencies { implementation(platform(SpringBootPlugin.BOM_COORDINATES)) implementation(platform("io.opentelemetry:opentelemetry-bom:1.36.0")) implementation(platform("io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:2.2.0-alpha")) + implementation("org.springframework.boot:spring-boot-starter-actuator") implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-starter-data-jdbc") implementation("com.h2database:h2") implementation("io.opentelemetry.instrumentation:opentelemetry-spring-boot-starter") + + // for otelCustomizer in Application.java + implementation("io.opentelemetry.contrib:opentelemetry-samplers:1.33.0-alpha") } diff --git a/spring-native/collector-spring-native-config.yaml b/spring-native/collector-spring-native-config.yaml index 58d79532e..07af47bf9 100644 --- a/spring-native/collector-spring-native-config.yaml +++ b/spring-native/collector-spring-native-config.yaml @@ -1,7 +1,7 @@ receivers: otlp: protocols: - grpc: + http: exporters: logging: verbosity: detailed diff --git a/spring-native/docker-compose.yml b/spring-native/docker-compose.yml index ad8a1f541..592045064 100644 --- a/spring-native/docker-compose.yml +++ b/spring-native/docker-compose.yml @@ -1,12 +1,10 @@ -version: '3' +version: '3.8' services: app: image: otel-native-graalvm environment: OTEL_SERVICE_NAME: "graal-native-example-app" - OTEL_EXPORTER_OTLP_ENDPOINT: "http://collector:4317" - # Logs are disabled by default - OTEL_LOGS_EXPORTER: "otlp" + OTEL_EXPORTER_OTLP_ENDPOINT: "http://collector:4318" ports: - "8080:8080" depends_on: diff --git a/spring-native/src/main/java/io/opentelemetry/example/graal/Application.java b/spring-native/src/main/java/io/opentelemetry/example/graal/Application.java index d3ee7315f..c5ebb1db3 100644 --- a/spring-native/src/main/java/io/opentelemetry/example/graal/Application.java +++ b/spring-native/src/main/java/io/opentelemetry/example/graal/Application.java @@ -1,7 +1,12 @@ package io.opentelemetry.example.graal; +import io.opentelemetry.api.trace.SpanKind; +import io.opentelemetry.contrib.sampler.RuleBasedRoutingSampler; +import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider; +import io.opentelemetry.semconv.SemanticAttributes; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; @SpringBootApplication public class Application { @@ -9,4 +14,14 @@ public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } + + @Bean + public AutoConfigurationCustomizerProvider otelCustomizer() { + return p -> + p.addSamplerCustomizer( + (fallback, c) -> + RuleBasedRoutingSampler.builder(SpanKind.SERVER, fallback) + .drop(SemanticAttributes.URL_PATH, "^/actuator") + .build()); + } } diff --git a/spring-native/src/main/resources/application.properties b/spring-native/src/main/resources/application.properties index 716d7043b..86c6cd333 100644 --- a/spring-native/src/main/resources/application.properties +++ b/spring-native/src/main/resources/application.properties @@ -1,2 +1,3 @@ spring.datasource.url=jdbc:otel:h2:mem:db -spring.datasource.driver-class-name=io.opentelemetry.instrumentation.jdbc.OpenTelemetryDriver \ No newline at end of file +spring.datasource.driver-class-name=io.opentelemetry.instrumentation.jdbc.OpenTelemetryDriver +management.endpoints.web.exposure.include=*