Module: Drone
- Extended by:
- Forwardable
- Defined in:
- lib/drone.rb,
lib/drone/core.rb,
lib/drone/errors.rb,
lib/drone/version.rb,
lib/drone/monitoring.rb,
lib/drone/utils/ewma.rb,
lib/drone/storage/base.rb,
lib/drone/metrics/gauge.rb,
lib/drone/metrics/meter.rb,
lib/drone/metrics/timer.rb,
lib/drone/metrics/metric.rb,
lib/drone/storage/memory.rb,
lib/drone/interfaces/base.rb,
lib/drone/metrics/counter.rb,
lib/drone/metrics/histogram.rb,
lib/drone/interfaces/console.rb,
lib/drone/utils/uniform_sample.rb,
lib/drone/schedulers/eventmachine.rb,
lib/drone/utils/exponentially_decaying_sample.rb
Defined Under Namespace
Modules: Interface, Interfaces, Metrics, Monitoring, Schedulers, Storage Classes: AlreadyDefined, DroneError, EWMA, ExponentiallyDecayingSample, Metric, UniformSample
Constant Summary collapse
- VERSION =
"1.0.10"
Class Method Summary collapse
-
.add_output(type, *args) ⇒ Object
Instantiate an output module.
- .each_metric ⇒ Object
-
.find_metric(name) ⇒ Object
Fetch a metric by its name.
- .init_drone(scheduler = Schedulers::EMScheduler, storage = Storage::Memory.new) ⇒ Object
-
.register_counter(type) ⇒ Object
Register a new counter.
-
.register_gauge(type, &block) ⇒ Object
Register a new gauge.
-
.register_histogram(name, type = :uniform) ⇒ Object
Register an Histogram.
-
.register_timer(name) ⇒ Object
Register a new timer.
- .require_lib(path) ⇒ Object
-
.start_monitoring ⇒ Object
Start monitoring.
Class Method Details
.add_output(type, *args) ⇒ Object
Instantiate an output module.
77 78 79 80 81 |
# File 'lib/drone/core.rb', line 77 def add_output(type, *args) class_name = type.to_s.capitalize klass = Drone::Interfaces.const_get(class_name) @output_modules << klass.new(*args) end |
.each_metric ⇒ Object
55 56 57 58 |
# File 'lib/drone/core.rb', line 55 def each_metric raise "Block expected" unless block_given? @metrics.each{|m| yield(m) } end |
.find_metric(name) ⇒ Object
Fetch a metric by its name
66 67 68 |
# File 'lib/drone/core.rb', line 66 def find_metric(name) @metrics.detect{|m| m.name == name } end |
.init_drone(scheduler = Schedulers::EMScheduler, storage = Storage::Memory.new) ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/drone/core.rb', line 37 def init_drone(scheduler = Schedulers::EMScheduler, storage = Storage::Memory.new) @metrics = [] @scheduler = scheduler @storage = storage @monitored_classes = [] @output_modules = [] end |
.register_counter(type) ⇒ Object
Register a new counter
89 90 91 |
# File 'lib/drone/core.rb', line 89 def register_counter(type) register_metric( Drone::Metrics::Counter.new(type) ) end |
.register_gauge(type, &block) ⇒ Object
Register a new gauge
111 112 113 |
# File 'lib/drone/core.rb', line 111 def register_gauge(type, &block) register_metric( Drone::Metrics::Gauge.new(type, &block) ) end |
.register_histogram(name, type = :uniform) ⇒ Object
Register an Histogram
101 102 103 |
# File 'lib/drone/core.rb', line 101 def register_histogram(name, type = :uniform) register_metric( Drone::Metrics::Histogram.new(name, type) ) end |
.register_timer(name) ⇒ Object
Register a new timer
121 122 123 |
# File 'lib/drone/core.rb', line 121 def register_timer(name) register_metric( Drone::Metrics::Timer.new(name) ) end |
.require_lib(path) ⇒ Object
3 4 5 |
# File 'lib/drone.rb', line 3 def self.require_lib(path) require File.("../#{path}", __FILE__) end |
.start_monitoring ⇒ Object
Start monitoring. This method needs to be called when the timers can be started In the case of eventmachine scheduler it needs to be called in the EM::run block
51 52 53 |
# File 'lib/drone/core.rb', line 51 def start_monitoring @scheduler.start() end |