class LHC::Monitoring

Constants

FORWARDED_OPTIONS

Options forwarded to the monitoring

Public Instance Methods

after_request(request) click to toggle source
# File lib/lhc-core-interceptors/monitoring.rb, line 17
def after_request(request)
  return unless statsd
  LHC::Monitoring.statsd.count("#{key(request)}.count", 1)
  LHC::Monitoring.statsd.count("#{key(request)}.after_request", 1)
end
after_response(response) click to toggle source
# File lib/lhc-core-interceptors/monitoring.rb, line 23
def after_response(response)
  return unless statsd
  key = key(response)
  LHC::Monitoring.statsd.timing("#{key}.time", response.time) if response.success?
  key += response.timeout? ? '.timeout' : ".#{response.code}"
  LHC::Monitoring.statsd.count(key, 1)
end
before_request(request) click to toggle source
# File lib/lhc-core-interceptors/monitoring.rb, line 12
def before_request(request)
  return unless statsd
  LHC::Monitoring.statsd.count("#{key(request)}.before_request", 1)
end

Private Instance Methods

key(target) click to toggle source
# File lib/lhc-core-interceptors/monitoring.rb, line 33
def key(target)
  request = target.is_a?(LHC::Request) ? target : target.request
  key = options(request.options)[:key]
  return key if key.present?

  url = sanitize_url(request.url)
  key = [
    'lhc',
    Rails.application.class.parent_name.underscore,
    Rails.env,
    URI.parse(url).host.gsub(/\./, '_'),
    request.method
  ]
  key.join('.')
end
options(input = {}) click to toggle source
# File lib/lhc-core-interceptors/monitoring.rb, line 54
def options(input = {})
  options = {}
  FORWARDED_OPTIONS.each do |k, v|
    options[v] = input[k] if input.key?(k)
  end
  options
end
sanitize_url(url) click to toggle source
# File lib/lhc-core-interceptors/monitoring.rb, line 49
def sanitize_url(url)
  return url if url.match(%r{https?://})
  "http://#{url}"
end