2019-03-02 22:35:43 +05:30
|
|
|
# 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
|
2019-07-07 11:18:12 +05:30
|
|
|
|
|
|
|
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
|
2019-03-02 22:35:43 +05:30
|
|
|
end
|
|
|
|
end
|