diff --git a/lib/gitlab/metrics/rack_middleware.rb b/lib/gitlab/metrics/rack_middleware.rb
index 5c0587c4c51396d331a67681650b60b50dfa5df4..e7a2f26d48bd3e9d101eb10684faf5cafdab11b9 100644
--- a/lib/gitlab/metrics/rack_middleware.rb
+++ b/lib/gitlab/metrics/rack_middleware.rb
@@ -32,8 +32,8 @@ def call(env)
       def transaction_from_env(env)
         trans = Transaction.new
 
-        trans.add_tag(:request_method, env['REQUEST_METHOD'])
-        trans.add_tag(:request_uri, env['REQUEST_URI'])
+        trans.set(:request_uri, env['REQUEST_URI'])
+        trans.set(:request_method, env['REQUEST_METHOD'])
 
         trans
       end
diff --git a/lib/gitlab/metrics/transaction.rb b/lib/gitlab/metrics/transaction.rb
index 68b86de065529c9372bef9844b4cc155ebb944b6..73131cc6ef25d11257d8107a0b81741a51ade100 100644
--- a/lib/gitlab/metrics/transaction.rb
+++ b/lib/gitlab/metrics/transaction.rb
@@ -4,7 +4,7 @@ module Metrics
     class Transaction
       THREAD_KEY = :_gitlab_metrics_transaction
 
-      attr_reader :uuid, :tags
+      attr_reader :tags, :values
 
       def self.current
         Thread.current[THREAD_KEY]
@@ -12,7 +12,6 @@ def self.current
 
       def initialize
         @metrics = []
-        @uuid    = SecureRandom.uuid
 
         @started_at  = nil
         @finished_at = nil
@@ -38,7 +37,6 @@ def run
       end
 
       def add_metric(series, values, tags = {})
-        tags   = tags.merge(transaction_id: @uuid)
         prefix = sidekiq? ? 'sidekiq_' : 'rails_'
 
         @metrics << Metric.new("#{prefix}#{series}", values, tags)
@@ -48,6 +46,10 @@ def increment(name, value)
         @values[name] += value
       end
 
+      def set(name, value)
+        @values[name] = value
+      end
+
       def add_tag(key, value)
         @tags[key] = value
       end
diff --git a/spec/lib/gitlab/metrics/rack_middleware_spec.rb b/spec/lib/gitlab/metrics/rack_middleware_spec.rb
index a143fe4cfcd68a8f4de75b6ae85b393125025a9f..4e6dfc73df2eb8da38f92b64e047942b7648fe15 100644
--- a/spec/lib/gitlab/metrics/rack_middleware_spec.rb
+++ b/spec/lib/gitlab/metrics/rack_middleware_spec.rb
@@ -40,9 +40,9 @@
       expect(transaction).to be_an_instance_of(Gitlab::Metrics::Transaction)
     end
 
-    it 'tags the transaction with the request method and URI' do
-      expect(transaction.tags[:request_method]).to eq('GET')
-      expect(transaction.tags[:request_uri]).to eq('/foo')
+    it 'stores the request method and URI in the transaction as values' do
+      expect(transaction.values[:request_method]).to eq('GET')
+      expect(transaction.values[:request_uri]).to eq('/foo')
     end
   end
 
diff --git a/spec/lib/gitlab/metrics/transaction_spec.rb b/spec/lib/gitlab/metrics/transaction_spec.rb
index b9b94947afa21dc2db2426a7ee3f1a004f3d63d2..3a27f8977352c4f3ea6ed644032c3ff5aacf5f18 100644
--- a/spec/lib/gitlab/metrics/transaction_spec.rb
+++ b/spec/lib/gitlab/metrics/transaction_spec.rb
@@ -30,9 +30,9 @@
   end
 
   describe '#add_metric' do
-    it 'adds a metric tagged with the transaction UUID' do
+    it 'adds a metric to the transaction' do
       expect(Gitlab::Metrics::Metric).to receive(:new).
-        with('rails_foo', { number: 10 }, { transaction_id: transaction.uuid })
+        with('rails_foo', { number: 10 }, {})
 
       transaction.add_metric('foo', number: 10)
     end
@@ -50,6 +50,17 @@
     end
   end
 
+  describe '#set' do
+    it 'sets a value' do
+      transaction.set(:number, 10)
+
+      expect(transaction).to receive(:add_metric).
+        with('transactions', { duration: 0.0, number: 10 }, {})
+
+      transaction.track_self
+    end
+  end
+
   describe '#add_tag' do
     it 'adds a tag' do
       transaction.add_tag(:foo, 'bar')