# frozen_string_literal: true module Gitlab module Tracing # Only enable tracing when the `GITLAB_TRACING` env var is configured. Note that we avoid using ApplicationSettings since # the same environment variable needs to be configured for Workhorse, Gitaly and any other components which # emit tracing. Since other components may start before Rails, and may not have access to ApplicationSettings, # an env var makes more sense. 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 return unless tracing_url_enabled? # Avoid using `format` since it can throw TypeErrors # which we want to avoid on unsanitised env var input tracing_url_template.to_s .gsub(/\{\{\s*correlation_id\s*\}\}/, Gitlab::CorrelationId.current_id.to_s) .gsub(/\{\{\s*service\s*\}\}/, Gitlab.process_name) end end end