Update histogram buckets for Banzai cacheless_render metrics

This commit is contained in:
John Hope 2021-10-28 17:22:35 +00:00 committed by Douglas Barbosa Alexandre
parent c228e5bcd1
commit b5edb275f4
3 changed files with 52 additions and 11 deletions

View file

@ -160,16 +160,40 @@ def self.post_process(html, context)
def self.cacheless_render(text, context = {})
return text.to_s unless text.present?
Gitlab::Metrics.measure(:banzai_cacheless_render) do
result = render_result(text, context)
real_start = Gitlab::Metrics::System.monotonic_time
cpu_start = Gitlab::Metrics::System.cpu_time
output = result[:output]
if output.respond_to?(:to_html)
output.to_html
else
output.to_s
end
end
result = render_result(text, context)
output = result[:output]
rendered = if output.respond_to?(:to_html)
output.to_html
else
output.to_s
end
cpu_duration_histogram.observe({}, Gitlab::Metrics::System.cpu_time - cpu_start)
real_duration_histogram.observe({}, Gitlab::Metrics::System.monotonic_time - real_start)
rendered
end
def self.real_duration_histogram
Gitlab::Metrics.histogram(
:gitlab_banzai_cacheless_render_real_duration_seconds,
'Duration of Banzai pipeline rendering in real time',
{},
[0.01, 0.01, 0.05, 0.1, 0.5, 1, 2, 5, 10.0, 50, 100]
)
end
def self.cpu_duration_histogram
Gitlab::Metrics.histogram(
:gitlab_banzai_cacheless_render_cpu_duration_seconds,
'Duration of Banzai pipeline rendering in cpu time',
{},
Gitlab::Metrics::EXECUTION_MEASUREMENT_BUCKETS
)
end
def self.full_cache_key(cache_key, pipeline_name)

View file

@ -84,6 +84,24 @@ def fake_cacheless_object
end
end
describe '#cacheless_render' do
context 'without cache' do
let(:object) { fake_object(fresh: false) }
let(:histogram) { double('prometheus histogram') }
it 'returns cacheless render field' do
allow(renderer).to receive(:render_result).and_return(output: 'test')
allow(renderer).to receive(:real_duration_histogram).and_return(histogram)
allow(renderer).to receive(:cpu_duration_histogram).and_return(histogram)
expect(renderer).to receive(:render_result).with('test', {})
expect(histogram).to receive(:observe).twice
renderer.cacheless_render('test')
end
end
end
describe '#post_process' do
let(:context_options) { {} }
let(:html) { 'Consequatur aperiam et nesciunt modi aut assumenda quo id. '}

View file

@ -280,7 +280,7 @@
end
context 'metrics' do
let(:histogram) { double(:histogram) }
let(:histogram) { double(:histogram).as_null_object }
let(:counter) { double('counter', increment: true) }
before do
@ -315,7 +315,6 @@
)
expect(counter).to receive(:increment)
allow(histogram).to receive(:observe).with({ importer: :bitbucket_server_importer }, anything)
subject.execute
end