Module: Gitlab::SecretDetection::GRPC::IntegratedErrorTracking

Extended by:
IntegratedErrorTracking
Included in:
IntegratedErrorTracking, ScannerService
Defined in:
lib/gitlab/secret_detection/grpc/integrated_error_tracking.rb

Instance Method Summary collapse

Instance Method Details

#can_setup_sentry?Boolean

Returns:

  • (Boolean)


58
59
60
# File 'lib/gitlab/secret_detection/grpc/integrated_error_tracking.rb', line 58

def can_setup_sentry?
  ENV.fetch('SD_ENV', '') == 'production' && ENV.fetch('SD_TRACKING_DSN', '') != ''
end

#ruleset_versionObject



54
55
56
# File 'lib/gitlab/secret_detection/grpc/integrated_error_tracking.rb', line 54

def ruleset_version
  @ruleset_version ||= Gitlab::SecretDetection::Core::Ruleset.new.extract_ruleset_version || 'unknown'
end

#setup(logger: Logger.new($stdout)) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/gitlab/secret_detection/grpc/integrated_error_tracking.rb', line 24

def setup(logger: Logger.new($stdout))
  if Sentry.initialized?
    logger.warn(message: "Sentry is already initialized, skipping re-setup")
    return
  end

  logger.info(message: "Initializing Sentry SDK for Integrated Error Tracking..")

  unless can_setup_sentry?
    logger.warn(message: "Integrated Error Tracking not available, skipping Sentry SDK initialization")
    return false
  end

  Sentry.init do |config|
    config.dsn = ENV.fetch('SD_TRACKING_DSN')
    config.environment = ENV.fetch('SD_ENV')
    config.release = Gitlab::SecretDetection::Gem::VERSION
    config.send_default_pii = true
    config.send_modules = false
    config.traces_sample_rate = 0.2 if ENV.fetch('ENABLE_SENTRY_PERFORMANCE_MONITORING', 'false') == 'true'
  end

  Sentry.set_context('ruleset', { version: ruleset_version })

  true
rescue StandardError => e
  logger.error(message: "Failed to initialize Sentry SDK for Integrated Error Tracking: #{e}")
  raise e
end

#track_exception(exception, args = {}) ⇒ Object



13
14
15
16
17
18
19
20
21
22
# File 'lib/gitlab/secret_detection/grpc/integrated_error_tracking.rb', line 13

def track_exception(exception, args = {})
  unless Sentry.initialized?
    logger.warn(message: "Cannot track exception in Error Tracking as Sentry is not initialized")
    return
  end

  args[:ruleset_version] = ruleset_version

  Sentry.capture_exception(exception, **args)
end