Sha256: c499e66998aad7e14c00286f2b1d4cfebb03568aaed7dda60768a53756c9f1de

Contents?: true

Size: 1.44 KB

Versions: 3

Compression:

Stored size: 1.44 KB

Contents

# frozen_string_literal: true

require "active_support/all"

module Labkit
  # Tracing provides distributed tracing functionality
  module Tracing
    autoload :Common, "labkit/tracing/common"
    autoload :Factory, "labkit/tracing/factory"
    autoload :GRPCInterceptor, "labkit/tracing/grpc_interceptor"
    autoload :JaegerFactory, "labkit/tracing/jaeger_factory"
    autoload :RackMiddleware, "labkit/tracing/rack_middleware"
    autoload :Rails, "labkit/tracing/rails"
    autoload :Sidekiq, "labkit/tracing/sidekiq"

    # Tracing is only enabled when the `GITLAB_TRACING` env var is configured.
    def self.enabled?
      connection_string.present?
    end

    def self.connection_string
      ENV["GITLAB_TRACING"]
    end

    def self.tracing_url_template
      ENV["GITLAB_TRACING_URL"]
    end

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

    # This will provide a link into the distributed tracing for the current trace,
    # if it has been captured.
    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
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gitlab-labkit-0.1.2 lib/labkit/tracing.rb
gitlab-labkit-0.1.0.pre.1.pre.gcb57c95 lib/labkit/tracing.rb
gitlab-labkit-0.1.0 lib/labkit/tracing.rb