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
14 changes: 13 additions & 1 deletion spring-declarative-configuration/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ This Spring Boot application includes two endpoints:
### Prerequisites

- Java 17 or higher
- OpenTelemetry Spring Boot Starter **2.22.0+** on the classpath of this application (already
- OpenTelemetry Spring Boot Starter **2.30.0+** on the classpath of this application (already
configured in this example’s [build file](./build.gradle.kts))

### Step 1: Build the Application
Expand Down Expand Up @@ -203,6 +203,18 @@ environment variable is not set.

When copying configuration from non-Spring examples, always convert `:-` to `:` in placeholders.

## Read instrumentation configuration programmatically

Starting with version 2.30.0, the OpenTelemetry Spring Boot Starter exposes a `ConfigProvider`
Spring bean. The [`ReadInstrumentationConfig`](./src/main/java/io/opentelemetry/examples/fileconfig/ReadInstrumentationConfig.java)
component demonstrates how application code can inject this bean and read instrumentation
configuration.

`ConfigProvider#getInstrumentationConfig()` returns the `instrumentation/development` configuration
tree. This example walks through `java.common.db.query_sanitization` and reads the `enabled` value,
defaulting to `true` when it is not configured. The same tree is used whether the setting comes from
an `otel.instrumentation.*` property or the equivalent declarative YAML configuration.

## Declarative vs Programmatic Configuration

Declarative configuration, as used in this example, allows you to express routing and sampling rules
Expand Down
2 changes: 1 addition & 1 deletion spring-declarative-configuration/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ java {

dependencies {
implementation(platform(SpringBootPlugin.BOM_COORDINATES))
implementation(platform("io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.29.0"))
implementation(platform("io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.30.0"))
implementation("org.springframework.boot:spring-boot-starter-actuator")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("io.opentelemetry.instrumentation:opentelemetry-spring-boot-starter")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.examples.fileconfig;

import io.opentelemetry.api.incubator.config.ConfigProvider;
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
import org.springframework.stereotype.Component;

/** Example of reading instrumentation configuration from application code. */
@Component
public class ReadInstrumentationConfig {

private final ConfigProvider configProvider;

public ReadInstrumentationConfig(ConfigProvider configProvider) {
this.configProvider = configProvider;
}

public boolean isDbQuerySanitizationEnabled() {
DeclarativeConfigProperties dbConfig =
configProvider
.getInstrumentationConfig()
.get("java")
.get("common")
.get("db")
.get("query_sanitization");
return dbConfig.getBoolean("enabled", true);
}
}
Loading