From: Omri Zeneva Date: Tue, 15 Feb 2022 13:38:44 +0000 (-0500) Subject: common/tracer: use batch_span_processor over simple processor X-Git-Tag: v18.0.0~789^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=41606cd05030ac95854b2b3515f56c28b328f478;p=ceph.git common/tracer: use batch_span_processor over simple processor the batch span processor holds batch of spans until timeout reached or it fills up, instead of sending each span alone which is a huge overhead Signed-off-by: Omri Zeneva --- diff --git a/src/common/tracer.cc b/src/common/tracer.cc index 4d183eb72e79..f908ffe31852 100644 --- a/src/common/tracer.cc +++ b/src/common/tracer.cc @@ -6,7 +6,9 @@ #include "tracer.h" #ifdef HAVE_JAEGER - +#include "opentelemetry/sdk/trace/batch_span_processor.h" +#include "opentelemetry/sdk/trace/tracer_provider.h" +#include "opentelemetry/exporters/jaeger/jaeger_exporter.h" namespace tracing { @@ -21,10 +23,11 @@ Tracer::Tracer(opentelemetry::nostd::string_view service_name) { void Tracer::init(opentelemetry::nostd::string_view service_name) { if (!tracer) { - const opentelemetry::exporter::jaeger::JaegerExporterOptions opts; - auto jaeger_exporter = std::unique_ptr(new opentelemetry::exporter::jaeger::JaegerExporter(opts)); - auto processor = std::unique_ptr(new opentelemetry::sdk::trace::SimpleSpanProcessor(std::move(jaeger_exporter))); + const opentelemetry::exporter::jaeger::JaegerExporterOptions exporter_options; + const opentelemetry::sdk::trace::BatchSpanProcessorOptions processor_options; const auto jaeger_resource = opentelemetry::sdk::resource::Resource::Create(std::move(opentelemetry::sdk::resource::ResourceAttributes{{"service.name", service_name}})); + auto jaeger_exporter = std::unique_ptr(new opentelemetry::exporter::jaeger::JaegerExporter(exporter_options)); + auto processor = std::unique_ptr(new opentelemetry::sdk::trace::BatchSpanProcessor(std::move(jaeger_exporter), processor_options)); const auto provider = opentelemetry::nostd::shared_ptr(new opentelemetry::sdk::trace::TracerProvider(std::move(processor), jaeger_resource)); tracer = provider->GetTracer(service_name, OPENTELEMETRY_SDK_VERSION); } @@ -52,8 +55,9 @@ jspan Tracer::start_trace(opentelemetry::nostd::string_view trace_name, bool tra jspan Tracer::add_span(opentelemetry::nostd::string_view span_name, const jspan& parent_span) { if (is_enabled() && parent_span->IsRecording()) { - const auto parent_ctx = parent_span->GetContext(); - return add_span(span_name, parent_ctx); + opentelemetry::trace::StartSpanOptions span_opts; + span_opts.parent = parent_span->GetContext(); + return tracer->StartSpan(span_name, span_opts); } return noop_span; } diff --git a/src/common/tracer.h b/src/common/tracer.h index 242ae00e42d1..1ad57e91f56a 100644 --- a/src/common/tracer.h +++ b/src/common/tracer.h @@ -7,11 +7,7 @@ #include "include/buffer.h" #ifdef HAVE_JAEGER - #include "opentelemetry/trace/provider.h" -#include "opentelemetry/exporters/jaeger/jaeger_exporter.h" -#include "opentelemetry/sdk/trace/simple_processor.h" -#include "opentelemetry/sdk/trace/tracer_provider.h" using jspan = opentelemetry::nostd::shared_ptr; using jspan_context = opentelemetry::trace::SpanContext;