skylight: add service probe
This commit is contained in:
parent
162b5b0cca
commit
9b0fb64ba1
|
@ -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
|
||||
|
||||
|
|
51
lib/travis/api/app/skylight/service_probe.rb
Normal file
51
lib/travis/api/app/skylight/service_probe.rb
Normal 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
|
Loading…
Reference in New Issue
Block a user