diff --git a/config/initializers/metrics.rb b/config/initializers/metrics.rb
index a9fc38fb04a1e242123fb93cbe17108d173e3ed9..1b445bbbd10200baee8b5b0485206bd480c8a8fd 100644
--- a/config/initializers/metrics.rb
+++ b/config/initializers/metrics.rb
@@ -75,6 +75,29 @@ if Gitlab::Metrics.enabled?
       config.instrument_methods(const)
       config.instrument_instance_methods(const)
     end
+
+    # Instruments all Banzai filters
+    Dir[Rails.root.join('lib', 'banzai', 'filter', '*.rb')].each do |file|
+      klass = File.basename(file, File.extname(file)).camelize
+      const = Banzai::Filter.const_get(klass)
+
+      config.instrument_methods(const)
+      config.instrument_instance_methods(const)
+    end
+
+    config.instrument_methods(Banzai::ReferenceExtractor)
+    config.instrument_instance_methods(Banzai::ReferenceExtractor)
+
+    config.instrument_methods(Banzai::Renderer)
+    config.instrument_methods(Banzai::Querying)
+
+    [Issuable, Mentionable, Participable].each do |klass|
+      config.instrument_instance_methods(klass)
+      config.instrument_instance_methods(klass::ClassMethods)
+    end
+
+    config.instrument_methods(Gitlab::ReferenceExtractor)
+    config.instrument_instance_methods(Gitlab::ReferenceExtractor)
   end
 
   GC::Profiler.enable
diff --git a/lib/banzai/renderer.rb b/lib/banzai/renderer.rb
index ae714c87dc54bef7bb9032af713e897b699f7081..c14a9c4c72218fea9baef0482a0dbc88f20c784c 100644
--- a/lib/banzai/renderer.rb
+++ b/lib/banzai/renderer.rb
@@ -19,8 +19,10 @@ module Banzai
       cache_key = full_cache_key(cache_key, context[:pipeline])
 
       if cache_key
-        Rails.cache.fetch(cache_key) do
-          cacheless_render(text, context)
+        Gitlab::Metrics.measure(:banzai_cached_render) do
+          Rails.cache.fetch(cache_key) do
+            cacheless_render(text, context)
+          end
         end
       else
         cacheless_render(text, context)
@@ -64,13 +66,15 @@ module Banzai
     private
 
     def self.cacheless_render(text, context = {})
-      result = render_result(text, context)
+      Gitlab::Metrics.measure(:banzai_cacheless_render) do
+        result = render_result(text, context)
 
-      output = result[:output]
-      if output.respond_to?(:to_html)
-        output.to_html
-      else
-        output.to_s
+        output = result[:output]
+        if output.respond_to?(:to_html)
+          output.to_html
+        else
+          output.to_s
+        end
       end
     end