55 lines
1.4 KiB
Ruby
55 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
module Import
|
|
class Metrics
|
|
IMPORT_DURATION_BUCKETS = [0.5, 1, 3, 5, 10, 60, 120, 240, 360, 720, 1440].freeze
|
|
|
|
attr_reader :importer
|
|
|
|
def initialize(importer, project)
|
|
@importer = importer
|
|
@project = project
|
|
end
|
|
|
|
def track_finished_import
|
|
duration = Time.zone.now - @project.created_at
|
|
|
|
duration_histogram.observe({ importer: importer }, duration)
|
|
projects_counter.increment
|
|
end
|
|
|
|
def projects_counter
|
|
@projects_counter ||= Gitlab::Metrics.counter(
|
|
:"#{importer}_imported_projects_total",
|
|
'The number of imported projects'
|
|
)
|
|
end
|
|
|
|
def issues_counter
|
|
@issues_counter ||= Gitlab::Metrics.counter(
|
|
:"#{importer}_imported_issues_total",
|
|
'The number of imported issues'
|
|
)
|
|
end
|
|
|
|
def merge_requests_counter
|
|
@merge_requests_counter ||= Gitlab::Metrics.counter(
|
|
:"#{importer}_imported_merge_requests_total",
|
|
'The number of imported merge (pull) requests'
|
|
)
|
|
end
|
|
|
|
private
|
|
|
|
def duration_histogram
|
|
@duration_histogram ||= Gitlab::Metrics.histogram(
|
|
:"#{importer}_total_duration_seconds",
|
|
'Total time spent importing projects, in seconds',
|
|
{},
|
|
IMPORT_DURATION_BUCKETS
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|