]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common/tracer: use batch_span_processor over simple processor
authorOmri Zeneva <ozeneva@redhat.com>
Tue, 15 Feb 2022 13:38:44 +0000 (08:38 -0500)
committerOmri Zeneva <ozeneva@redhat.com>
Tue, 17 May 2022 08:41:49 +0000 (04:41 -0400)
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 <ozeneva@redhat.com>
src/common/tracer.cc
src/common/tracer.h

index 4d183eb72e793ceaccc3bd7c9c472134d5a56a40..f908ffe3185261b2c050d3f8235af273c42e4533 100644 (file)
@@ -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<opentelemetry::sdk::trace::SpanExporter>(new opentelemetry::exporter::jaeger::JaegerExporter(opts));
-    auto processor = std::unique_ptr<opentelemetry::sdk::trace::SpanProcessor>(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<opentelemetry::sdk::trace::SpanExporter>(new opentelemetry::exporter::jaeger::JaegerExporter(exporter_options));
+    auto processor = std::unique_ptr<opentelemetry::sdk::trace::SpanProcessor>(new opentelemetry::sdk::trace::BatchSpanProcessor(std::move(jaeger_exporter), processor_options));
     const auto provider = opentelemetry::nostd::shared_ptr<opentelemetry::trace::TracerProvider>(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;
 }
index 242ae00e42d1177057c8727e2d29fd53ba87193d..1ad57e91f56a10e27bb1475efc30117ba8e89a01 100644 (file)
@@ -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<opentelemetry::trace::Span>;
 using jspan_context = opentelemetry::trace::SpanContext;