summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorick Peterse <yorickpeterse@gmail.com>2016-01-04 13:17:02 +0100
committerYorick Peterse <yorickpeterse@gmail.com>2016-01-04 13:17:02 +0100
commit2ee8f555996baca6b470d223ffad65419b730398 (patch)
treec43a546ecce40b06d5a6b3063f7119036324e3ab
parent2ea464bb272fa52ff34a188a921f0bc90811ca45 (diff)
downloadgitlab-ce-2ee8f555996baca6b470d223ffad65419b730398.tar.gz
Automatically prefix transaction series names
This ensures Rails and Sidekiq transactions are split into the series "rails_transactions" and "sidekiq_transactions" respectively.
-rw-r--r--lib/gitlab/metrics/rack_middleware.rb4
-rw-r--r--lib/gitlab/metrics/sidekiq_middleware.rb4
-rw-r--r--lib/gitlab/metrics/transaction.rb15
-rw-r--r--spec/lib/gitlab/metrics/instrumentation_spec.rb2
-rw-r--r--spec/lib/gitlab/metrics/sidekiq_middleware_spec.rb2
-rw-r--r--spec/lib/gitlab/metrics/subscribers/action_view_spec.rb2
-rw-r--r--spec/lib/gitlab/metrics/subscribers/active_record_spec.rb2
-rw-r--r--spec/lib/gitlab/metrics/transaction_spec.rb8
8 files changed, 19 insertions, 20 deletions
diff --git a/lib/gitlab/metrics/rack_middleware.rb b/lib/gitlab/metrics/rack_middleware.rb
index bb9e4fcb918..5c0587c4c51 100644
--- a/lib/gitlab/metrics/rack_middleware.rb
+++ b/lib/gitlab/metrics/rack_middleware.rb
@@ -4,8 +4,6 @@ module Gitlab
class RackMiddleware
CONTROLLER_KEY = 'action_controller.instance'
- SERIES = 'rails_transactions'
-
def initialize(app)
@app = app
end
@@ -32,7 +30,7 @@ module Gitlab
end
def transaction_from_env(env)
- trans = Transaction.new(SERIES)
+ trans = Transaction.new
trans.add_tag(:request_method, env['REQUEST_METHOD'])
trans.add_tag(:request_uri, env['REQUEST_URI'])
diff --git a/lib/gitlab/metrics/sidekiq_middleware.rb b/lib/gitlab/metrics/sidekiq_middleware.rb
index 6e804dd2562..ad441decfa2 100644
--- a/lib/gitlab/metrics/sidekiq_middleware.rb
+++ b/lib/gitlab/metrics/sidekiq_middleware.rb
@@ -4,10 +4,8 @@ module Gitlab
#
# This middleware is intended to be used as a server-side middleware.
class SidekiqMiddleware
- SERIES = 'sidekiq_transactions'
-
def call(worker, message, queue)
- trans = Transaction.new(SERIES)
+ trans = Transaction.new
begin
trans.run { yield }
diff --git a/lib/gitlab/metrics/transaction.rb b/lib/gitlab/metrics/transaction.rb
index 0aaebf262d4..68b86de0655 100644
--- a/lib/gitlab/metrics/transaction.rb
+++ b/lib/gitlab/metrics/transaction.rb
@@ -10,9 +10,7 @@ module Gitlab
Thread.current[THREAD_KEY]
end
- # name - The name of this transaction as a String.
- def initialize(series)
- @series = series
+ def initialize
@metrics = []
@uuid = SecureRandom.uuid
@@ -40,9 +38,10 @@ module Gitlab
end
def add_metric(series, values, tags = {})
- tags = tags.merge(transaction_id: @uuid)
+ tags = tags.merge(transaction_id: @uuid)
+ prefix = sidekiq? ? 'sidekiq_' : 'rails_'
- @metrics << Metric.new(series, values, tags)
+ @metrics << Metric.new("#{prefix}#{series}", values, tags)
end
def increment(name, value)
@@ -65,12 +64,16 @@ module Gitlab
values[name] = value
end
- add_metric(@series, values, @tags)
+ add_metric('transactions', values, @tags)
end
def submit
Metrics.submit_metrics(@metrics.map(&:to_hash))
end
+
+ def sidekiq?
+ Sidekiq.server?
+ end
end
end
end
diff --git a/spec/lib/gitlab/metrics/instrumentation_spec.rb b/spec/lib/gitlab/metrics/instrumentation_spec.rb
index af020f652be..2a37cd40dde 100644
--- a/spec/lib/gitlab/metrics/instrumentation_spec.rb
+++ b/spec/lib/gitlab/metrics/instrumentation_spec.rb
@@ -1,7 +1,7 @@
require 'spec_helper'
describe Gitlab::Metrics::Instrumentation do
- let(:transaction) { Gitlab::Metrics::Transaction.new('rspec') }
+ let(:transaction) { Gitlab::Metrics::Transaction.new }
before do
@dummy = Class.new do
diff --git a/spec/lib/gitlab/metrics/sidekiq_middleware_spec.rb b/spec/lib/gitlab/metrics/sidekiq_middleware_spec.rb
index 5fda6de52f4..5882e7d81c7 100644
--- a/spec/lib/gitlab/metrics/sidekiq_middleware_spec.rb
+++ b/spec/lib/gitlab/metrics/sidekiq_middleware_spec.rb
@@ -15,7 +15,7 @@ describe Gitlab::Metrics::SidekiqMiddleware do
describe '#tag_worker' do
it 'adds the worker class and action to the transaction' do
- trans = Gitlab::Metrics::Transaction.new('rspec')
+ trans = Gitlab::Metrics::Transaction.new
worker = double(:worker, class: double(:class, name: 'TestWorker'))
expect(trans).to receive(:add_tag).with(:action, 'TestWorker#perform')
diff --git a/spec/lib/gitlab/metrics/subscribers/action_view_spec.rb b/spec/lib/gitlab/metrics/subscribers/action_view_spec.rb
index 699d50f770a..05e4fbbeb51 100644
--- a/spec/lib/gitlab/metrics/subscribers/action_view_spec.rb
+++ b/spec/lib/gitlab/metrics/subscribers/action_view_spec.rb
@@ -1,7 +1,7 @@
require 'spec_helper'
describe Gitlab::Metrics::Subscribers::ActionView do
- let(:transaction) { Gitlab::Metrics::Transaction.new('rspec') }
+ let(:transaction) { Gitlab::Metrics::Transaction.new }
let(:subscriber) { described_class.new }
diff --git a/spec/lib/gitlab/metrics/subscribers/active_record_spec.rb b/spec/lib/gitlab/metrics/subscribers/active_record_spec.rb
index 9ecedd934c6..81f35ba5d40 100644
--- a/spec/lib/gitlab/metrics/subscribers/active_record_spec.rb
+++ b/spec/lib/gitlab/metrics/subscribers/active_record_spec.rb
@@ -1,7 +1,7 @@
require 'spec_helper'
describe Gitlab::Metrics::Subscribers::ActiveRecord do
- let(:transaction) { Gitlab::Metrics::Transaction.new('rspec') }
+ let(:transaction) { Gitlab::Metrics::Transaction.new }
let(:subscriber) { described_class.new }
let(:event) do
diff --git a/spec/lib/gitlab/metrics/transaction_spec.rb b/spec/lib/gitlab/metrics/transaction_spec.rb
index 18d63bdbdb9..b9b94947afa 100644
--- a/spec/lib/gitlab/metrics/transaction_spec.rb
+++ b/spec/lib/gitlab/metrics/transaction_spec.rb
@@ -1,7 +1,7 @@
require 'spec_helper'
describe Gitlab::Metrics::Transaction do
- let(:transaction) { described_class.new('rspec') }
+ let(:transaction) { described_class.new }
describe '#duration' do
it 'returns the duration of a transaction in seconds' do
@@ -32,7 +32,7 @@ describe Gitlab::Metrics::Transaction do
describe '#add_metric' do
it 'adds a metric tagged with the transaction UUID' do
expect(Gitlab::Metrics::Metric).to receive(:new).
- with('foo', { number: 10 }, { transaction_id: transaction.uuid })
+ with('rails_foo', { number: 10 }, { transaction_id: transaction.uuid })
transaction.add_metric('foo', number: 10)
end
@@ -44,7 +44,7 @@ describe Gitlab::Metrics::Transaction do
transaction.increment(:time, 2)
expect(transaction).to receive(:add_metric).
- with('rspec', { duration: 0.0, time: 3 }, {})
+ with('transactions', { duration: 0.0, time: 3 }, {})
transaction.track_self
end
@@ -70,7 +70,7 @@ describe Gitlab::Metrics::Transaction do
describe '#track_self' do
it 'adds a metric for the transaction itself' do
expect(transaction).to receive(:add_metric).
- with('rspec', { duration: transaction.duration }, {})
+ with('transactions', { duration: transaction.duration }, {})
transaction.track_self
end