skylight: add service probe

This commit is contained in:
Henrik Hodne 2014-04-09 16:47:25 -05:00
parent 162b5b0cca
commit 9b0fb64ba1
2 changed files with 52 additions and 0 deletions

View File

@ -11,6 +11,7 @@ class Travis::Api::App
require 'skylight'
require 'travis/api/app/skylight/dalli_probe'
require 'travis/api/app/skylight/redis_probe'
require 'travis/api/app/skylight/service_probe'
register ::Skylight::Sinatra
end

View File

@ -0,0 +1,51 @@
require 'skylight'
require 'travis/api/app'
class Travis::Api::App
module Skylight
class ServiceProbe
class ServiceProxy < Delegator
def initialize(key, service)
super(service)
@key = key
@service = service
end
def __getobj__
@service
end
def __setobj__(obj)
@service = obj
end
def run(*args)
opts = {
category: "api.service.#{@key}",
title: "Service #{@key}",
annotations: {
service: @key.to_s
}
}
::Skylight.instrument(opts) do
@service.run(*args)
end
end
end
def install
Travis::Services::Helpers.class_eval do
alias service_without_sk service
def service(key, *args)
s = service_without_sk(key, *args)
ServiceProxy.new(key, s)
end
end
end
end
::Skylight::Probes.register("Travis::Services::Helpers", "travis/services/helpers", ServiceProbe.new)
end
end