From 738cbb54d38f59fd80bfe7ad5ae11cbc780149fb Mon Sep 17 00:00:00 2001 From: Henrik Hodne Date: Wed, 9 Apr 2014 03:08:22 -0500 Subject: [PATCH] Add Dalli instrumentation to Skylight --- config.ru | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/config.ru b/config.ru index 3e624c3c..c617e0ca 100644 --- a/config.ru +++ b/config.ru @@ -32,12 +32,31 @@ end if ENV['SKYLIGHT_APPLICATION'] require 'skylight' + require 'skylight/probes/net_http' require 'logger' config = Skylight::Config.load(nil, ENV['RACK_ENV'], ENV) config['root'] = File.expand_path('..', __FILE__) config['agent.sockfile_path'] = File.expand_path('../tmp', __FILE__) config.logger = Logger.new(STDOUT) config.validate! + + class DalliProbe + def install + %w[get get_multi set add incr decr delete replace append prepend].each do |method_name| + next unless Dalli::Client.method_defined?(method_name.to_sym) + Dalli::Client.class_eval <<-EOD + alias #{method_name}_without_sk #{method_name} + def #{method_name}(*args, &block) + Skylight.instrument(category: "api.memcache.#{method_name}", title: "Memcache #{method_name}") do + #{method_name}_without_sk(*args, &block) + end + end + EOD + end + end + end + Skylight::Probes.register("Dalli::Client", "dalli", DalliProbe.new) + Skylight.start!(config) use Skylight::Middleware