Class: Barnes::Periodic

Inherits:
Object
  • Object
show all
Defined in:
lib/barnes/periodic.rb

Instance Method Summary collapse

Constructor Details

#initialize(reporter:, interval: 10, debug: false, panels: []) ⇒ Periodic

Returns a new instance of Periodic.



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/barnes/periodic.rb', line 29

def initialize(reporter:, interval: 10, debug: false, panels: [])
  @reporter = reporter
  @debug = debug
  @interval = interval
  @panels = panels

  @thread = Thread.new {
    Thread.current[:barnes_state] = {}

    @panels.each do |panel|
      panel.start! Thread.current[:barnes_state]
    end

    loop do
      begin
        sleep @interval

        env = {
          STATE    => Thread.current[:barnes_state],
          COUNTERS => {},
          GAUGES   => {}
        }

        @panels.each do |panel|
          panel.instrument! env[STATE], env[COUNTERS], env[GAUGES]
        end

        puts env.to_json if @debug
        @reporter.report env
      rescue => e
        $stderr.puts "barnes: error during metrics collection: #{e.class}: #{e.message}"
      end
    end
  }
  @thread.abort_on_exception = true
end

Instance Method Details

#stopObject



66
67
68
# File 'lib/barnes/periodic.rb', line 66

def stop
  @thread.exit
end