Skip to content

Commit 67b3e3d

Browse files
committed
move metrics for ActiveRecord, RailsCache and queue duration to instance variables
1 parent 735365a commit 67b3e3d

File tree

3 files changed

+40
-38
lines changed

3 files changed

+40
-38
lines changed

lib/gitlab/metrics/subscribers/active_record.rb

+10-10
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,9 @@ module Subscribers
55
class ActiveRecord < ActiveSupport::Subscriber
66
attach_to :active_record
77

8-
def self.metric_sql_duration_seconds
9-
@metric_sql_duration_seconds ||= Gitlab::Metrics.histogram(
10-
:gitlab_sql_duration_seconds,
11-
'SQL time',
12-
Transaction::BASE_LABELS,
13-
[0.001, 0.002, 0.005, 0.01, 0.02, 0.05, 0.1, 0.500, 2.0, 10.0]
14-
)
15-
end
16-
178
def sql(event)
189
return unless current_transaction
19-
self.class.metric_sql_duration_seconds.observe(current_transaction.labels, event.duration / 1000.0)
10+
metric_sql_duration_seconds.observe(current_transaction.labels, event.duration / 1000.0)
2011

2112
current_transaction.increment(:sql_duration, event.duration, false)
2213
current_transaction.increment(:sql_count, 1, false)
@@ -27,6 +18,15 @@ def sql(event)
2718
def current_transaction
2819
Transaction.current
2920
end
21+
22+
def metric_sql_duration_seconds
23+
@metric_sql_duration_seconds ||= Gitlab::Metrics.histogram(
24+
:gitlab_sql_duration_seconds,
25+
'SQL time',
26+
Transaction::BASE_LABELS,
27+
[0.001, 0.002, 0.005, 0.01, 0.02, 0.05, 0.1, 0.500, 2.0, 10.0]
28+
)
29+
end
3030
end
3131
end
3232
end

lib/gitlab/metrics/subscribers/rails_cache.rb

+20-20
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,6 @@ module Subscribers
66
class RailsCache < ActiveSupport::Subscriber
77
attach_to :active_support
88

9-
def self.metric_cache_operation_duration_seconds
10-
@metric_cache_operation_duration_seconds ||= Gitlab::Metrics.histogram(
11-
:gitlab_cache_operation_duration_seconds,
12-
'Cache access time',
13-
Transaction::BASE_LABELS.merge({ action: nil }),
14-
[0.001, 0.002, 0.005, 0.01, 0.02, 0.05, 0.1, 0.500, 2.0, 10.0]
15-
)
16-
end
17-
18-
def self.metric_cache_misses_total
19-
@metric_cache_misses_total ||= Gitlab::Metrics.counter(
20-
:gitlab_cache_misses_total,
21-
'Cache read miss',
22-
Transaction::BASE_LABELS
23-
)
24-
end
25-
269
def cache_read(event)
2710
observe(:read, event.duration)
2811

@@ -32,7 +15,7 @@ def cache_read(event)
3215
if event.payload[:hit]
3316
current_transaction.increment(:cache_read_hit_count, 1, false)
3417
else
35-
self.class.metric_cache_misses_total.increment(current_transaction.labels)
18+
self.metric_cache_misses_total.increment(current_transaction.labels)
3619
current_transaction.increment(:cache_read_miss_count, 1, false)
3720
end
3821
end
@@ -58,14 +41,14 @@ def cache_fetch_hit(event)
5841
def cache_generate(event)
5942
return unless current_transaction
6043

61-
self.class.metric_cache_misses_total.increment(current_transaction.labels)
44+
self.metric_cache_misses_total.increment(current_transaction.labels)
6245
current_transaction.increment(:cache_read_miss_count, 1)
6346
end
6447

6548
def observe(key, duration)
6649
return unless current_transaction
6750

68-
self.class.metric_cache_operation_duration_seconds.observe(current_transaction.labels.merge({ operation: key }), duration / 1000.0)
51+
self.metric_cache_operation_duration_seconds.observe(current_transaction.labels.merge({ operation: key }), duration / 1000.0)
6952
current_transaction.increment(:cache_duration, duration, false)
7053
current_transaction.increment(:cache_count, 1, false)
7154
current_transaction.increment("cache_#{key}_duration".to_sym, duration, false)
@@ -77,6 +60,23 @@ def observe(key, duration)
7760
def current_transaction
7861
Transaction.current
7962
end
63+
64+
def metric_cache_operation_duration_seconds
65+
@metric_cache_operation_duration_seconds ||= Gitlab::Metrics.histogram(
66+
:gitlab_cache_operation_duration_seconds,
67+
'Cache access time',
68+
Transaction::BASE_LABELS.merge({ action: nil }),
69+
[0.001, 0.002, 0.005, 0.01, 0.02, 0.05, 0.1, 0.500, 2.0, 10.0]
70+
)
71+
end
72+
73+
def metric_cache_misses_total
74+
@metric_cache_misses_total ||= Gitlab::Metrics.counter(
75+
:gitlab_cache_misses_total,
76+
'Cache read miss',
77+
Transaction::BASE_LABELS
78+
)
79+
end
8080
end
8181
end
8282
end

lib/gitlab/middleware/rails_queue_duration.rb

+10-8
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,6 @@
55
module Gitlab
66
module Middleware
77
class RailsQueueDuration
8-
def self.metric_rails_queue_duration_seconds
9-
@metric_rails_queue_duration_seconds ||= Gitlab::Metrics.histogram(
10-
:gitlab_rails_queue_duration_seconds,
11-
Gitlab::Metrics::Transaction::BASE_LABELS
12-
)
13-
end
14-
158
def initialize(app)
169
@app = app
1710
end
@@ -23,11 +16,20 @@ def call(env)
2316
# Time in milliseconds since gitlab-workhorse started the request
2417
duration = Time.now.to_f * 1_000 - proxy_start.to_f / 1_000_000
2518
trans.set(:rails_queue_duration, duration)
26-
self.class.metric_rails_queue_duration_seconds.observe(trans.labels, duration / 1_000)
19+
metric_rails_queue_duration_seconds.observe(trans.labels, duration / 1_000)
2720
end
2821

2922
@app.call(env)
3023
end
24+
25+
private
26+
27+
def metric_rails_queue_duration_seconds
28+
@metric_rails_queue_duration_seconds ||= Gitlab::Metrics.histogram(
29+
:gitlab_rails_queue_duration_seconds,
30+
Gitlab::Metrics::Transaction::BASE_LABELS
31+
)
32+
end
3133
end
3234
end
3335
end

0 commit comments

Comments
 (0)