Class: MetriksAddons::BaseReporter

Inherits:
Object
  • Object
show all
Defined in:
lib/metriks-addons/base_reporter.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ BaseReporter

Returns a new instance of BaseReporter.



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/metriks-addons/base_reporter.rb', line 17

def initialize(options = {})
  @logger       = options[:logger] || nil
  @registry     = options[:registry] || Metriks::Registry.default
  @interval     = options[:interval] || 60
  @time_tracker = Metriks::TimeTracker.new(@interval)
  @on_error     = options[:on_error] || proc { |ex| }

  if options[:percentiles]
    @percentiles = options[:percentiles]
  else
    @percentiles = [ 0.95, 0.99]
  end

  @mutex = Mutex.new
  @running = false
end

Instance Method Details

#flushObject



65
66
67
68
69
70
71
72
73
74
75
# File 'lib/metriks-addons/base_reporter.rb', line 65

def flush
  begin
    @mutex.synchronize do
      log "debug", "Flushing metrics"
      submit get_datapoints
    end
  rescue Exception => ex
    log "error",ex.message
    @on_error[ex] rescue nil
  end
end

#log(level, msg) ⇒ Object



77
78
79
80
81
# File 'lib/metriks-addons/base_reporter.rb', line 77

def log(level, msg)
  if !@logger.nil?
    @logger.send level, msg
  end
end

#restartObject



60
61
62
63
# File 'lib/metriks-addons/base_reporter.rb', line 60

def restart
  stop
  start
end

#startObject



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/metriks-addons/base_reporter.rb', line 34

def start
  if @thread && @thread.alive?
    return
  end

  @running = true
  @thread = Thread.new do
    while @running
      @time_tracker.sleep

      Thread.new do
        flush
      end
    end
  end
end

#stopObject



51
52
53
54
55
56
57
58
# File 'lib/metriks-addons/base_reporter.rb', line 51

def stop
  @running = false

  if @thread
    @thread.join
    @thread = nil
  end
end