From 60f1866af8d61283c17c59b2175161fcbd8f3b0f Mon Sep 17 00:00:00 2001 From: Tomasz Maczukin Date: Mon, 29 Jul 2019 13:25:42 +0200 Subject: Add metric tracking duration of handled CI jobs --- app/workers/build_finished_worker.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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 -- cgit v1.2.1