class Mettric::Client
Attributes
app[R]
env[R]
host[R]
Public Class Methods
new(config = ::Mettric.config) { |self| ... }
click to toggle source
# File lib/mettric/client.rb, line 9 def initialize(config = ::Mettric.config) @config = config || {} @riemann = Riemann::Client.new( host: @config[:host] || 'localhost', port: @config[:port] || 5555, timeout: @config[:timeout] || 5 ) self.app = (@config[:app] || rails_app_name).to_s.underscore self.host = (@config[:reporting_host] || host_name).to_s.underscore self.env = (@config[:env] || rails_env).to_s.underscore if block_given? begin yield self ensure close end end end
Public Instance Methods
<<(payload)
click to toggle source
# File lib/mettric/client.rb, line 45 def <<(payload) @riemann.tcp << standardize_payload(payload) rescue => e track_exception(e, payload) end
[](*args)
click to toggle source
# File lib/mettric/client.rb, line 51 def [](*args) @riemann[*args] end
app=(app_name)
click to toggle source
# File lib/mettric/client.rb, line 31 def app=(app_name) raise Mettric::MissingAppName, app.inspect if app_name.blank? @app = app_name end
close()
click to toggle source
# File lib/mettric/client.rb, line 55 def close @riemann.close end
connected?()
click to toggle source
# File lib/mettric/client.rb, line 59 def connected? @riemann.connected? end
env=(env)
click to toggle source
# File lib/mettric/client.rb, line 41 def env=(env) @env = env end
host=(host_name)
click to toggle source
# File lib/mettric/client.rb, line 36 def host=(host_name) raise Mettric::MissingHostName if host_name.blank? @host = host_name end
Private Instance Methods
host_name()
click to toggle source
# File lib/mettric/client.rb, line 102 def host_name (ENV['METTRIC_REPORTING_HOST'] || `hostname`).to_s.chomp.underscore end
rails_app_name()
click to toggle source
# File lib/mettric/client.rb, line 92 def rails_app_name return unless Kernel.const_defined?(:Rails) Rails.application.class.parent.to_s.underscore end
rails_env()
click to toggle source
# File lib/mettric/client.rb, line 97 def rails_env return unless Kernel.const_defined?(:Rails) Rails.env end
standardize_payload(payload)
click to toggle source
# File lib/mettric/client.rb, line 71 def standardize_payload(payload) out = stringify(payload) raise Mettric::MissingService, out if out[:service].blank? out[:tags] = [out[:tags], :mettric].flatten.compact.uniq.map(&:to_s) out[:tags] << env if env.present? out[:metric] ||= 1 out[:host] = host out[:service] = "#{app}.#{out[:service]}" out end
stringify(payload)
click to toggle source
# File lib/mettric/client.rb, line 85 def stringify(payload) out = payload.symbolize_keys out.each do |k,v| out[k] = v.to_s if v.is_a?(Symbol) end end
track_exception(e, payload)
click to toggle source
# File lib/mettric/client.rb, line 65 def track_exception(e, payload) @riemann.tcp << { service: 'Mettric error', description: e.to_s } return unless Kernel.const_defined?(:NewRelic) NewRelic::Agent.notice_error(e, payload) rescue nil end