diff --git a/ext/central-controller-docker/main.sh b/ext/central-controller-docker/main.sh index eaf2ea6ae..b1c4b4cbc 100755 --- a/ext/central-controller-docker/main.sh +++ b/ext/central-controller-docker/main.sh @@ -83,8 +83,10 @@ echo "{ \"lowBandwidthMode\": ${ZT_LB_MODE:-$DEFAULT_LB_MODE}, \"ssoRedirectURL\": \"${ZT_SSO_REDIRECT_URL}\", \"allowManagementFrom\": [\"127.0.0.1\", \"::1\", \"10.0.0.0/8\"], - \"exporterEndpoint\": \"${ZT_EXPORTER_ENDPOINT}\", - \"exporterSampleRate\": ${ZT_EXPORTER_SAMPLE_RATE:-0}, + \"otel\": { + \"exporterEndpoint\": \"${ZT_EXPORTER_ENDPOINT}\", + \"exporterSampleRate\": ${ZT_EXPORTER_SAMPLE_RATE:-0} + }, ${REDIS} } } diff --git a/service/OneService.cpp b/service/OneService.cpp index fd6fe2244..abccff21b 100644 --- a/service/OneService.cpp +++ b/service/OneService.cpp @@ -1057,7 +1057,9 @@ class OneServiceImpl : public OneService { auto sampler = std::unique_ptr(new sdktrace::TraceIdRatioBasedSampler(_exporterSampleRate)); auto tracer_context = std::make_shared(std::move(processor), resource, std::move(sampler)); _traceProvider = nostd::shared_ptr(new sdktrace::TracerProvider(tracer_context)); + opentelemetry::trace::Provider::SetTracerProvider(_traceProvider); + opentelemetry::trace::Provider:: } } @@ -1601,6 +1603,12 @@ class OneServiceImpl : public OneService { if (_exporterEndpoint.empty()) { fprintf(stderr, "WARNING: OpenTelemetry exporter endpoint is not set. Metrics will not be exported." ZT_EOL_S); } + if (_exporterSampleRate <= 0.0) { + fprintf(stderr, "WARNING: OpenTelemetry exporter sample rate is not set or invalid. Metrics will not be exported." ZT_EOL_S); + } + } + else { + fprintf(stderr, "WARNING: OpenTelemetry exporter settings are not set. Metrics will not be exported." ZT_EOL_S); } #endif