summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz Maczukin <tomasz@maczukin.pl>2019-07-29 13:25:42 +0200
committerTomasz Maczukin <tomasz@maczukin.pl>2019-07-29 13:25:42 +0200
commit60f1866af8d61283c17c59b2175161fcbd8f3b0f (patch)
tree265ebc7863bacae21bc7791c83d578b63fe83ee6
parentca05130319ae9d74ee7771b5a8adb6cf25857fb7 (diff)
downloadgitlab-ce-add-metric-counting-handled-ci-jobs-duration.tar.gz
Add metric tracking duration of handled CI jobsadd-metric-counting-handled-ci-jobs-duration
-rw-r--r--app/workers/build_finished_worker.rb17
1 files changed, 17 insertions, 0 deletions
diff --git a/app/workers/build_finished_worker.rb b/app/workers/build_finished_worker.rb
index 8e2a18a8fd8..78c85b91179 100644
--- a/app/workers/build_finished_worker.rb
+++ b/app/workers/build_finished_worker.rb
@@ -4,6 +4,8 @@ class BuildFinishedWorker
include ApplicationWorker
include PipelineQueue
+ JOB_DURATION_SECONDS_BUCKETS = [60, 300, 600, 1800, 3600, 7200, 21600, 86400].freeze
+
queue_namespace :pipeline_processing
# rubocop: disable CodeReuse/ActiveRecord
@@ -33,4 +35,19 @@ class BuildFinishedWorker
ExpirePipelineCacheWorker.perform_async(build.pipeline_id)
ChatNotificationWorker.perform_async(build.id) if build.pipeline.chat?
end
+
+ def register_duration(build)
+ runner_type = if build.runner
+ build.runner.runner_type
+ else
+ :none
+ end
+ labels = { runner_type: runner_type }
+
+ job_duration_seconds.observe(labels, build.duration)
+ end
+
+ def job_duration_seconds
+ @job_duration_seconds ||= Gitlab::Metrics.histogram(:job_duration_seconds, 'Job execution time', {}, JOB_DURATION_SECONDS_BUCKETS)
+ end
end