]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common/trace: pass ceph context explicitly to the tracer
authorYuval Lifshitz <ylifshit@ibm.com>
Fri, 14 Jul 2023 14:18:21 +0000 (14:18 +0000)
committerDeepika Upadhyay <deepika@koor.tech>
Wed, 2 Aug 2023 15:38:23 +0000 (21:08 +0530)
Signed-off-by: Yuval Lifshitz <ylifshit@ibm.com>
src/common/tracer.cc
src/common/tracer.h
src/osd/OSD.cc
src/rgw/rgw_appmain.cc
src/rgw/rgw_tracer.cc
src/test/rgw/test_rgw_lua.cc

index 1d6901b895bb143a5818d1241cda3f6e3a33d275..aab3c1e930853a56278c32bea66fd6c44ac1091a 100644 (file)
@@ -2,7 +2,6 @@
 // vim: ts=8 sw=2 smarttab
 
 #include "common/ceph_context.h"
-#include "global/global_context.h"
 #include "tracer.h"
 #include "common/debug.h"
 
 #include "opentelemetry/sdk/trace/tracer_provider.h"
 #include "opentelemetry/exporters/jaeger/jaeger_exporter.h"
 
-#define dout_context g_ceph_context
 #define dout_subsys ceph_subsys_osd
 #undef dout_prefix
-#define dout_prefix *_dout << "opentelemetry_jaeger_tracing "
+#define dout_prefix (*_dout << "otel_tracing: ")
 
 namespace tracing {
 
@@ -23,17 +21,13 @@ const jspan Tracer::noop_span = noop_tracer->StartSpan("noop");
 
 using bufferlist = ceph::buffer::list;
 
-Tracer::Tracer(opentelemetry::nostd::string_view service_name) {
-  init(service_name);
-}
-
-void Tracer::init(opentelemetry::nostd::string_view service_name) {
+void Tracer::init(CephContext* _cct, opentelemetry::nostd::string_view service_name) {
+  ceph_assert(_cct);
+  cct = _cct;
   if (!tracer) {
-    dout(3) << "tracer was not loaded, initializing tracing" << dendl;
+    ldout(cct, 3) << "tracer was not loaded, initializing tracing" << dendl;
     opentelemetry::exporter::jaeger::JaegerExporterOptions exporter_options;
-    if (g_ceph_context) {
-      exporter_options.server_port = g_ceph_context->_conf.get_val<int64_t>("jaeger_agent_port");
-    }
+    exporter_options.server_port = cct->_conf.get_val<int64_t>("jaeger_agent_port");
     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));
@@ -45,44 +39,52 @@ void Tracer::init(opentelemetry::nostd::string_view service_name) {
 }
 
 jspan Tracer::start_trace(opentelemetry::nostd::string_view trace_name) {
+  ceph_assert(cct);
   if (is_enabled()) {
-    dout(20) << "start trace for " << trace_name << " " << dendl;
+    ceph_assert(tracer);
+    ldout(cct, 20) << "start trace for " << trace_name << " " << dendl;
     return tracer->StartSpan(trace_name);
   }
   return noop_span;
 }
 
 jspan Tracer::start_trace(opentelemetry::nostd::string_view trace_name, bool trace_is_enabled) {
-  dout(20) << "start trace enabled " << trace_is_enabled << " " << dendl;
+  ceph_assert(cct);
+  ldout(cct, 20) << "start trace enabled " << trace_is_enabled << " " << dendl;
   if (trace_is_enabled) {
-    dout(20) << "start trace for " << trace_name << " " << dendl;
+    ceph_assert(tracer);
+    ldout(cct, 20) << "start trace for " << trace_name << " " << dendl;
     return tracer->StartSpan(trace_name);
   }
   return noop_tracer->StartSpan(trace_name);
 }
 
 jspan Tracer::add_span(opentelemetry::nostd::string_view span_name, const jspan& parent_span) {
+  ceph_assert(cct);
   if (is_enabled() && parent_span->IsRecording()) {
+    ceph_assert(tracer);
     opentelemetry::trace::StartSpanOptions span_opts;
     span_opts.parent = parent_span->GetContext();
-    dout(20) << "adding span " << span_name << " " << dendl;
+    ldout(cct, 20) << "adding span " << span_name << " " << dendl;
     return tracer->StartSpan(span_name, span_opts);
   }
   return noop_span;
 }
 
 jspan Tracer::add_span(opentelemetry::nostd::string_view span_name, const jspan_context& parent_ctx) {
+  ceph_assert(cct);
   if (is_enabled() && parent_ctx.IsValid()) {
+    ceph_assert(tracer);
     opentelemetry::trace::StartSpanOptions span_opts;
     span_opts.parent = parent_ctx;
-    dout(20) << "adding span " << span_name << " " << dendl;
+    ldout(cct, 20) << "adding span " << span_name << " " << dendl;
     return tracer->StartSpan(span_name, span_opts);
   }
   return noop_span;
 }
 
 bool Tracer::is_enabled() const {
-  return g_ceph_context->_conf->jaeger_tracing_enable;
+  return cct->_conf->jaeger_tracing_enable;
 }
 
 void encode(const jspan_context& span_ctx, bufferlist& bl, uint64_t f) {
@@ -123,3 +125,4 @@ void decode(jspan_context& span_ctx, bufferlist::const_iterator& bl) {
 } // namespace tracing
 
 #endif // HAVE_JAEGER
+
index 9d13c78aafcee3800ed635677ee83c332dbb87ba..decbca55124cb36dc052a635461895f919097359 100644 (file)
@@ -19,13 +19,13 @@ class Tracer {
  private:
   const static opentelemetry::nostd::shared_ptr<opentelemetry::trace::Tracer> noop_tracer;
   const static jspan noop_span;
+  CephContext* cct = nullptr;;
   opentelemetry::nostd::shared_ptr<opentelemetry::trace::Tracer> tracer;
 
  public:
   Tracer() = default;
-  Tracer(opentelemetry::nostd::string_view service_name);
 
-  void init(opentelemetry::nostd::string_view service_name);
+  void init(CephContext* _cct, opentelemetry::nostd::string_view service_name);
 
   bool is_enabled() const;
   // creates and returns a new span with `trace_name`
index 488c22f0a2ad18a7350adaf2b79ad9b1a9fcca62..14094625d14aab0a92954270050bf0127ee073f6 100644 (file)
@@ -3608,7 +3608,7 @@ int OSD::init()
   std::lock_guard lock(osd_lock);
   if (is_stopping())
     return 0;
-  tracing::osd::tracer.init("osd");
+  tracing::osd::tracer.init(cct, "osd");
   tick_timer.init();
   tick_timer_without_osd_lock.init();
   service.recovery_request_timer.init();
index 40373d82cbab4de17ec4f1389db5ce7f766d9a81..ebad686e354fe89aff98582390947e188dc04cfd 100644 (file)
@@ -529,7 +529,7 @@ void rgw::AppMain::init_tracepoints()
 {
   TracepointProvider::initialize<rgw_rados_tracepoint_traits>(dpp->get_cct());
   TracepointProvider::initialize<rgw_op_tracepoint_traits>(dpp->get_cct());
-  tracing::rgw::tracer.init("rgw");
+  tracing::rgw::tracer.init(dpp->get_cct(), "rgw");
 } /* init_tracepoints() */
 
 void rgw::AppMain::init_notification_endpoints()
index 7e12bb2e62dcc442946dafc889f58cdd913ca985..f48988111c018ff61c502ac1b493bd75df09ab58 100644 (file)
@@ -1,7 +1,6 @@
 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
 // vim: ts=8 sw=2 smarttab
 
-#include <string>
 #include "rgw_tracer.h"
 
 namespace tracing {
index 0c348e01cfaa639db275bda4383b7e7b3305269a..6dc6f17e0dbf8d8a11ead0affdc1f55bfbf8ae02 100644 (file)
@@ -164,7 +164,7 @@ CctCleaner cleaner(g_cct);
 tracing::Tracer tracer;
 
 #define DEFINE_REQ_STATE RGWProcessEnv pe; RGWEnv e; req_state s(g_cct, pe, &e, 0);
-#define INIT_TRACE tracer.init("test"); \
+#define INIT_TRACE tracer.init(g_cct, "test"); \
                    s.trace = tracer.start_trace("test", true);
 
 TEST(TestRGWLua, EmptyScript)