Module: MetricsMachine

Defined in:
lib/metrics_machine.rb,
lib/metrics_machine/mysql.rb,
lib/metrics_machine/monitor.rb,
lib/metrics_machine/railtie.rb,
lib/metrics_machine/version.rb

Defined Under Namespace

Classes: Monitor, Mysql, Railtie

Constant Summary collapse

VERSION =
"0.0.4"

Class Method Summary collapse

Class Method Details

.configure(&block) ⇒ Object



38
39
40
# File 'lib/metrics_machine.rb', line 38

def self.configure &block
  monitor.configure &block
end

.die_gracefully_on_signalObject



42
43
44
45
# File 'lib/metrics_machine.rb', line 42

def self.die_gracefully_on_signal
  Signal.trap("INT")  { EM.stop }
  Signal.trap("TERM") { EM.stop }
end

.monitorObject



34
35
36
# File 'lib/metrics_machine.rb', line 34

def self.monitor
  @monitor ||= Monitor.new reporter
end

.reporterObject



47
48
49
# File 'lib/metrics_machine.rb', line 47

def self.reporter
  @statsd ||= Statsd.new(reporter_config['host'],reporter_config['port'])
end

.start(options = {}, &block) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/metrics_machine.rb', line 13

def self.start options = {}, &block
  monitor.configure &block if block_given?

  p = lambda { EM.run { monitor.run! } }
  if defined?(PhusionPassenger)
    PhusionPassenger.on_event(:starting_worker_process) do |forked|
      if forked && EM.reactor_running?
        EM.stop
      end
  
      Thread.new &p
      die_gracefully_on_signal
    end
  else
    # faciliates debugging
    Thread.abort_on_exception = true
    # just spawn a thread and start it up
    Thread.new &p
  end
end