summaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
authorAndrew Newdigate <andrew@gitlab.com>2019-01-07 12:40:54 +0200
committerAndrew Newdigate <andrew@gitlab.com>2019-01-17 12:32:44 +0200
commit57a8859a11fe0c2cbd68deb83a2d2857c245fd2f (patch)
tree26728a2ac8d0dd6937de95e1de0711640de788d7 /config
parentf383c4032a6b3f2ee2c9e5aa50425fc3a04bc1b4 (diff)
downloadgitlab-ce-57a8859a11fe0c2cbd68deb83a2d2857c245fd2f.tar.gz
Conditionally initialize the global opentracing tracer
This change will instantiate an OpenTracing tracer and configure it as the global tracer when the GITLAB_TRACING environment variable is configured. GITLAB_TRACING takes a "connection string"-like value, encapsulating the driver (eg jaeger, etc) and options for the driver. Since each service, whether it's written in Ruby or Golang, uses the same connection-string, it should be very easy to configure all services in a cluster, or even a single development machine to be setup to use tracing. Note that this change does not include instrumentation or propagation changes as this is a way of breaking a previous larger change into components. The instrumentation and propagation changes will follow in separate changes.
Diffstat (limited to 'config')
-rw-r--r--config/initializers/tracing.rb13
1 files changed, 13 insertions, 0 deletions
diff --git a/config/initializers/tracing.rb b/config/initializers/tracing.rb
new file mode 100644
index 00000000000..be95f30d075
--- /dev/null
+++ b/config/initializers/tracing.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+if Gitlab::Tracing.enabled?
+ require 'opentracing'
+
+ # In multi-processed clustered architectures (puma, unicorn) don't
+ # start tracing until the worker processes are spawned. This works
+ # around issues when the opentracing implementation spawns threads
+ Gitlab::Cluster::LifecycleEvents.on_worker_start do
+ tracer = Gitlab::Tracing::Factory.create_tracer(Gitlab.process_name, Gitlab::Tracing.connection_string)
+ OpenTracing.global_tracer = tracer if tracer
+ end
+end