Class: Prometheus::Collector::Application

Inherits:
Object
  • Object
show all
Defined in:
lib/prometheus/collector/application.rb

Class Method Summary collapse

Class Method Details

.appObject



7
8
9
10
11
12
13
14
15
# File 'lib/prometheus/collector/application.rb', line 7

def self.app
  Rack::Builder.app do
    use Rack::CommonLogger, Prometheus::Collector.logger
    use Rack::Deflater
    use Prometheus::Middleware::Collector
    use Prometheus::Middleware::Exporter
    run lambda { |env| [200, {'Content-Type' => 'text/plain'}, ['OK']] }
  end
end

.initialize_runnable_extensionsObject



38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/prometheus/collector/application.rb', line 38

def self.initialize_runnable_extensions
  Prometheus::Collector.logger.info "Initializing Runnable Extensions"
  Thread.new do
    EM.run do
      Extensions::Runnable.values.each do |o|
        Prometheus::Collector.logger.info "Initializing #{o.class.name}"
        EM::Cron.schedule(o.class.schedule) do |time|
          EM.defer(o, o.callback, o.errback)
        end
      end
    end
  end
end

.initialize_static_extensionsObject



25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/prometheus/collector/application.rb', line 25

def self.initialize_static_extensions
  Prometheus::Collector.logger.info "Initializing Static Extensions"
  Extensions.values.each do |o|
    Prometheus::Collector.logger.info "Initializing #{o.class.name}"
    begin
      o.callback.call o.call
    rescue => e
      o.errback.call e
    end
  end
  Prometheus::Collector.logger.info "Done initializing Static Extensions"
end

.startObject



17
18
19
20
21
22
23
# File 'lib/prometheus/collector/application.rb', line 17

def self.start
  initialize_static_extensions
  initialize_runnable_extensions
  Rack::Server.start(
    app: app, Port: 9292
  )
end