-
Notifications
You must be signed in to change notification settings - Fork 579
Open
Labels
Milestone
Description
Environment Details
- Helidon Version: 4.1.5
- Helidon SE
- JDK version: 21
- OS:
- Docker version (if applicable):
Problem Description
otel configuration is not currently loaded by Helidon:
otel:
sdk.disabled: false
service.name: "todo:front"
traces.exporter: otlp
We can work around this for now using the following code:
private static Map<String, String> telemetryConfig(Config config) {
Config otelConfig = config.get("otel");
Map<String, String> result = new HashMap<>();
otelConfig.asMap().ifPresent(result::putAll);
result.putIfAbsent("otel.metrics.exporter", "none");
result.putIfAbsent("otel.logs.exporter", "none");
return result;
}
private static void prepareOpenTelemetry(Config config) {
String serviceName = config.get("otel.service.name").asString().orElse("HELIDON_SE_SERVICE");
OpenTelemetry openTelemetry = AutoConfiguredOpenTelemetrySdk.builder()
.addPropertiesCustomizer(x -> telemetryConfig(config))
.addResourceCustomizer((r, props) -> r.toBuilder()
.put(SERVICE_NAME, serviceName)
.build())
.build()
.getOpenTelemetrySdk();
if (openTelemetry == null) {
openTelemetry = OpenTelemetry.noop();
}
io.opentelemetry.api.trace.Tracer otelTracer = openTelemetry.getTracer(serviceName);
Tracer helidonTracer = HelidonOpenTelemetry.create(openTelemetry, otelTracer, Map.of());
Contexts.globalContext().register(helidonTracer);
}
However, it would be preferable to be able to load these either by config file or by environment variables.
Steps to reproduce
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Sprint Scope