Module: Dalia::MiniGraphite

Defined in:
lib/mini_graphite.rb,
lib/mini_graphite/logger.rb,
lib/mini_graphite/version.rb,
lib/mini_graphite/routes_reporter.rb

Defined Under Namespace

Classes: Logger, RoutesReporter

Constant Summary collapse

DEFAULTS =
{
  :graphite_host => "graphite.host.com",
  :graphite_port => 2003,
  :statsd_host => "statsd.host.com",
  :statsd_port => 8125,
  :mock_mode => false,
  :debug_mode => false
}
VERSION =
"0.3.7"

Class Method Summary collapse

Class Method Details

.benchmark_wrapper(key, result_send_method = nil) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/mini_graphite.rb', line 48

def self.benchmark_wrapper(key, result_send_method = nil)
  counter("#{key}.ini")

  result = nil

  time =
    Benchmark.realtime do
      result = yield
    end

  counter("#{key}.time", time * 1000)
  counter("#{key}.result", result.send(result_send_method)) if result_send_method
  counter("#{key}.end")

  time("#{key}.time_stats", time * 1000)

  result
end

.config(opts = {}) ⇒ Object



19
20
21
22
23
24
# File 'lib/mini_graphite.rb', line 19

def self.config(opts = {})
  @opts = DEFAULTS.merge(opts)
  @logger = Dalia::MiniGraphite::Logger.new(opts[:debug_mode])
  logger.debug("Initalized with opts")
  logger.debug(opts.inspect)
end

.counter(key, value = nil) ⇒ Object



33
34
35
36
37
38
39
# File 'lib/mini_graphite.rb', line 33

def self.counter(key, value = nil)
  value ||= 1
  signal = "#{key}:#{value}|c"
  logger.debug("Sending counter: '#{signal}'")

  send_udp(signal) if !opts[:mock_mode]
end

.datapoint(key, value = 1, timestamp = Time.now) ⇒ Object



26
27
28
29
30
31
# File 'lib/mini_graphite.rb', line 26

def self.datapoint(key, value = 1, timestamp = Time.now)
  signal = "#{key} #{value} #{timestamp.to_i}"
  logger.debug("Sending datapoint: '#{signal}'")

  send_tcp(signal) if !opts[:mock_mode]
end

.send_tcp(message) ⇒ Object



67
68
69
70
71
72
73
# File 'lib/mini_graphite.rb', line 67

def self.send_tcp(message)
  hosts = [opts[:graphite_host]].flatten

  hosts.each do |host|
    send_tcp_on_host(host, opts[:graphite_port], message)
  end
end

.send_tcp_on_host(host, port, message) ⇒ Object



83
84
85
86
87
# File 'lib/mini_graphite.rb', line 83

def self.send_tcp_on_host(host, port, message)
  socket = TCPSocket.new(host, port)
  socket.print("#{message}\n")
  socket.close
end

.send_udp(message) ⇒ Object



75
76
77
78
79
80
81
# File 'lib/mini_graphite.rb', line 75

def self.send_udp(message)
  hosts = [opts[:statsd_host]].flatten

  hosts.each do |host|
    send_udp_on_host(host, opts[:statsd_port], message)
  end
end

.send_udp_on_host(host, port, message) ⇒ Object



89
90
91
92
93
# File 'lib/mini_graphite.rb', line 89

def self.send_udp_on_host(host, port, message)
  socket = UDPSocket.new
  socket.send(message, 0, host, port)
  socket.close
end

.time(key, value = 0) ⇒ Object



41
42
43
44
45
46
# File 'lib/mini_graphite.rb', line 41

def self.time(key, value = 0)
  signal = "#{key}:#{value}|ms"
  logger.debug("Sending time: '#{signal}'")

  send_udp(signal) if !opts[:mock_mode]
end