Module: Labkit::Tracing

Defined in:
lib/labkit/tracing.rb,
lib/labkit/tracing/rails.rb,
lib/labkit/tracing/common.rb,
lib/labkit/tracing/factory.rb,
lib/labkit/tracing/sidekiq.rb,
lib/labkit/tracing/jaeger_factory.rb,
lib/labkit/tracing/rack_middleware.rb,
lib/labkit/tracing/grpc_interceptor.rb,
lib/labkit/tracing/rails/rails_common.rb,
lib/labkit/tracing/sidekiq/sidekiq_common.rb,
lib/labkit/tracing/sidekiq/client_middleware.rb,
lib/labkit/tracing/sidekiq/server_middleware.rb,
lib/labkit/tracing/rails/action_view_subscriber.rb,
lib/labkit/tracing/rails/active_record_subscriber.rb

Overview

Tracing provides distributed tracing functionality

Defined Under Namespace

Modules: Common, Rails, Sidekiq Classes: Factory, GRPCInterceptor, JaegerFactory, RackMiddleware

Class Method Summary collapse

Class Method Details

.connection_stringObject



21
22
23
# File 'lib/labkit/tracing.rb', line 21

def self.connection_string
  ENV["GITLAB_TRACING"]
end

.enabled?Boolean

Tracing is only enabled when the ‘GITLAB_TRACING` env var is configured.

Returns:

  • (Boolean)


17
18
19
# File 'lib/labkit/tracing.rb', line 17

def self.enabled?
  connection_string.present?
end

.tracing_url(service_name) ⇒ Object

This will provide a link into the distributed tracing for the current trace, if it has been captured.



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/labkit/tracing.rb', line 35

def self.tracing_url(service_name)
  return unless tracing_url_enabled?

  correlation_id = Labkit::Correlation::CorrelationId.current_id.to_s

  # Avoid using `format` since it can throw TypeErrors
  # which we want to avoid on unsanitised env var input
  tracing_url_template.to_s
                      .gsub("{{ correlation_id }}", correlation_id)
                      .gsub("{{ service }}", service_name)
end

.tracing_url_enabled?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/labkit/tracing.rb', line 29

def self.tracing_url_enabled?
  enabled? && tracing_url_template.present?
end

.tracing_url_templateObject



25
26
27
# File 'lib/labkit/tracing.rb', line 25

def self.tracing_url_template
  ENV["GITLAB_TRACING_URL"]
end