Skip to content

Commit 6006476

Browse files
committed
Log DB query counts per request
1 parent 85ce416 commit 6006476

File tree

10 files changed

+5
-61
lines changed

10 files changed

+5
-61
lines changed

lib/cloud_controller/metrics/prometheus_updater.rb

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ def self.allow_pid_label
1919
DURATION_BUCKETS = [5, 10, 30, 60, 300, 600, 890].freeze
2020
CONNECTION_DURATION_BUCKETS = [0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 5, 10].freeze
2121
DELAYED_JOB_METRIC_BUCKETS = [0.01, 0.05, 0.1, 0.5, 1, 2, 5, 10, 30, 60, 120, 300, 600].freeze
22-
DB_QUERY_BUCKETS = [1, 2, 5, 10, 20, 50, 100].freeze
2322

2423
METRICS = [
2524
{ type: :gauge, name: :cc_job_queues_length_total, docstring: 'Job queues length of worker processes', labels: [:queue], aggregation: :most_recent },
@@ -30,7 +29,6 @@ def self.allow_pid_label
3029
{ type: :histogram, name: :cc_staging_failed_duration_seconds, docstring: 'Durations of failed staging events', buckets: DURATION_BUCKETS },
3130
{ type: :gauge, name: :cc_requests_outstanding_total, docstring: 'Requests outstanding', aggregation: :sum },
3231
{ type: :counter, name: :cc_requests_completed_total, docstring: 'Requests completed' },
33-
{ type: :histogram, name: :cc_request_db_queries_total, docstring: 'Database queries per request', buckets: DB_QUERY_BUCKETS },
3432
{ type: :gauge, name: :cc_vitals_started_at, docstring: 'CloudController Vitals: started_at', aggregation: :most_recent },
3533
{ type: :gauge, name: :cc_vitals_mem_bytes, docstring: 'CloudController Vitals: mem_bytes', aggregation: :most_recent },
3634
{ type: :gauge, name: :cc_vitals_cpu_load_avg, docstring: 'CloudController Vitals: cpu_load_avg', aggregation: :most_recent },
@@ -126,10 +124,6 @@ def update_user_count(user_count)
126124
update_gauge_metric(:cc_users_total, user_count)
127125
end
128126

129-
def update_db_query_count(query_count)
130-
update_histogram_metric(:cc_request_db_queries_total, query_count)
131-
end
132-
133127
def update_job_queue_length(pending_job_count_by_queue)
134128
pending_job_count_by_queue.each do |key, value|
135129
update_gauge_metric(:cc_job_queues_length_total, value, labels: { queue: key.to_s.underscore })

lib/cloud_controller/metrics/request_metrics.rb

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,10 @@ def start_request
1414
end
1515

1616
def complete_request(status)
17-
query_count = VCAP::Request.db_query_count
1817
@statsd_updater.complete_request(status)
19-
@statsd_updater.record_db_query_count(query_count) if query_count
2018

2119
@prometheus_updater.increment_counter_metric(:cc_requests_completed_total)
2220
@prometheus_updater.decrement_gauge_metric(:cc_requests_outstanding_total)
23-
@prometheus_updater.update_db_query_count(query_count) if query_count
2421
end
2522
end
2623
end

lib/cloud_controller/metrics/statsd_updater.rb

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,6 @@ def complete_request(status)
110110
end
111111
end
112112

113-
def record_db_query_count(query_count)
114-
@statsd.gauge('cc.request.db_query_count', query_count)
115-
end
116-
117113
private
118114

119115
def nanoseconds_to_milliseconds(time_ns)

lib/vcap/request.rb

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,6 @@ def b3_span_id
5656
Thread.current[:b3_span_id]
5757
end
5858

59-
def db_query_count=(count)
60-
Thread.current[:db_query_count] = count
61-
end
62-
6359
def db_query_count
6460
Thread.current[:db_query_count]
6561
end

middleware/request_logs.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ def initialize(app, request_logs)
88

99
def call(env)
1010
request_id = env['cf.request_id']
11-
VCAP::Request.reset_db_query_count
1211
@request_logs.start_request(request_id, env)
12+
VCAP::Request.reset_db_query_count
1313
start_time = Time.now
1414

1515
status, headers, body = @app.call(env)

middleware/request_metrics.rb

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ def initialize(app, request_metrics)
77
end
88

99
def call(env)
10-
VCAP::Request.db_query_count = 0
1110
@request_metrics.start_request
1211

1312
status, headers, body = @app.call(env)
@@ -18,9 +17,7 @@ def call(env)
1817
status = 500
1918
raise e
2019
ensure
21-
query_count = VCAP::Request.db_query_count
22-
VCAP::Request.db_query_count = nil
23-
@request_metrics.complete_request(status, query_count)
20+
@request_metrics.complete_request(status)
2421
end
2522
end
2623
end

spec/unit/lib/cloud_controller/metrics/prometheus_updater_spec.rb

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -60,16 +60,6 @@ module VCAP::CloudController::Metrics
6060
end
6161
end
6262

63-
describe '#update_db_query_count' do
64-
it 'records queries per request' do
65-
updater.update_db_query_count(7)
66-
67-
metric = prom_client.metrics.find { |m| m.name == :cc_request_db_queries_total }
68-
expect(metric).to be_present
69-
expect(metric.get['sum']).to eq 7.0
70-
end
71-
end
72-
7363
describe '#update_job_queue_length' do
7464
it 'records the length of the delayed job queues and total' do
7565
expected_local_length = 5
@@ -288,6 +278,5 @@ module VCAP::CloudController::Metrics
288278
expect(metric.get).to eq({ '5' => 0.0, '10' => 0.0, '30' => 0.0, '60' => 0.0, '300' => 0.0, '600' => 0.0, '890' => 0.0, 'sum' => 900.0, '+Inf' => 1.0 })
289279
end
290280
end
291-
292281
end
293282
end

spec/unit/lib/cloud_controller/metrics/request_metrics_spec.rb

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,29 +32,15 @@ module VCAP::CloudController::Metrics
3232
let(:status) { 204 }
3333

3434
it 'increments completed, decrements outstanding, increments status for statsd' do
35-
allow(statsd_updater).to receive(:record_db_query_count)
36-
allow(prometheus_client).to receive(:update_db_query_count)
37-
38-
VCAP::Request.reset_db_query_count
39-
VCAP::Request.increment_db_query_count
40-
4135
request_metrics.complete_request(status)
4236
expect(statsd_updater).to have_received(:complete_request).with(status)
43-
expect(statsd_updater).to have_received(:record_db_query_count).with(1)
4437
end
4538

4639
it 'increments completed and decrements outstanding for prometheus' do
47-
allow(statsd_updater).to receive(:record_db_query_count)
48-
allow(prometheus_client).to receive(:update_db_query_count)
49-
50-
VCAP::Request.reset_db_query_count
51-
VCAP::Request.increment_db_query_count
52-
5340
request_metrics.complete_request(status)
5441

5542
expect(prometheus_client).to have_received(:decrement_gauge_metric).with(:cc_requests_outstanding_total)
5643
expect(prometheus_client).to have_received(:increment_counter_metric).with(:cc_requests_completed_total)
57-
expect(prometheus_client).to have_received(:update_db_query_count).with(1)
5844
end
5945
end
6046
end

spec/unit/lib/cloud_controller/metrics/statsd_updater_spec.rb

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ module VCAP::CloudController::Metrics
300300
end
301301
end
302302

303-
describe '#complete_request' do
303+
describe '#complete_request' do
304304
let(:batch) { double(:batch) }
305305
let(:status) { 204 }
306306

@@ -457,15 +457,4 @@ module VCAP::CloudController::Metrics
457457
end
458458
end
459459
end
460-
461-
describe '#record_db_query_count' do
462-
before do
463-
allow(statsd_client).to receive(:gauge)
464-
end
465-
466-
it 'records database query counts' do
467-
updater.record_db_query_count(3)
468-
expect(statsd_client).to have_received(:gauge).with('cc.request.db_query_count', 3)
469-
end
470-
end
471460
end

spec/unit/middleware/request_metrics_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ module Middleware
2020

2121
it 'calls complete request on request metrics after the request' do
2222
middleware.call({})
23-
expect(request_metrics).to have_received(:complete_request).with(200, an_instance_of(Integer))
23+
expect(request_metrics).to have_received(:complete_request).with(200)
2424
end
2525

2626
context 'when an unexpected error occurs' do
@@ -33,7 +33,7 @@ module Middleware
3333

3434
it 'catches the exception and calls complete request on request metrics' do
3535
expect { middleware.call({}) }.to raise_error('Unexpected') do
36-
expect(request_metrics).to have_received(:complete_request).with(500, an_instance_of(Integer))
36+
expect(request_metrics).to have_received(:complete_request).with(500)
3737
end
3838
end
3939
end

0 commit comments

Comments
 (0)