Module: Yabeda
- Includes:
- DSL
- Defined in:
- lib/yabeda.rb,
lib/yabeda/dsl.rb,
lib/yabeda/tags.rb,
lib/yabeda/gauge.rb,
lib/yabeda/group.rb,
lib/yabeda/errors.rb,
lib/yabeda/metric.rb,
lib/yabeda/counter.rb,
lib/yabeda/railtie.rb,
lib/yabeda/version.rb,
lib/yabeda/histogram.rb,
lib/yabeda/base_adapter.rb,
lib/yabeda/global_group.rb,
lib/yabeda/dsl/class_methods.rb,
lib/yabeda/dsl/metric_builder.rb,
lib/yabeda/dsl/option_builder.rb
Overview
Extendable framework for collecting and exporting metrics from Ruby apps
Defined Under Namespace
Modules: DSL, Rails Classes: AlreadyConfiguredError, BaseAdapter, ConfigurationError, Counter, Gauge, GlobalGroup, Group, Histogram, Metric, Tags
Constant Summary collapse
- VERSION =
"0.9.0"
Class Method Summary collapse
-
.adapters ⇒ Hash<String, Yabeda::BaseAdapter>
All loaded adapters.
-
.collectors ⇒ Array<Proc>
All collectors for periodical retrieving of metrics.
-
.configurators ⇒ Array<Proc>
All configuration blocks for postponed setup.
-
.configure! ⇒ void
Perform configuration: registration of metrics and collector blocks rubocop: disable Metrics/MethodLength, Metrics/AbcSize.
-
.configured? ⇒ Boolean
(also: already_configured?)
Whether
Yabeda.configure!
has been already called. -
.default_tags ⇒ Hash<Symbol, Symbol>
All added global default tags.
-
.groups ⇒ Hash<String, Yabeda::Group>
All registered metrics.
-
.metrics ⇒ Hash<String, Yabeda::Metric>
All registered metrics.
- .register_adapter(name, instance) ⇒ Object
-
.reset! ⇒ Object
private
Forget all the configuration.
Methods included from DSL
Class Method Details
.adapters ⇒ Hash<String, Yabeda::BaseAdapter>
Returns All loaded adapters.
29 30 31 |
# File 'lib/yabeda.rb', line 29 def adapters @adapters ||= Concurrent::Hash.new end |
.collectors ⇒ Array<Proc>
Returns All collectors for periodical retrieving of metrics.
34 35 36 |
# File 'lib/yabeda.rb', line 34 def collectors @collectors ||= Concurrent::Array.new end |
.configurators ⇒ Array<Proc>
Returns All configuration blocks for postponed setup.
54 55 56 |
# File 'lib/yabeda.rb', line 54 def configurators @configurators ||= Concurrent::Array.new end |
.configure! ⇒ void
This method returns an undefined value.
Perform configuration: registration of metrics and collector blocks rubocop: disable Metrics/MethodLength, Metrics/AbcSize
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/yabeda.rb', line 67 def configure! raise(AlreadyConfiguredError, @configured_by) if already_configured? configurators.each do |(group, block)| group group class_eval(&block) group nil end # Register metrics in adapters after evaluating all configuration blocks # to ensure that all global settings (like default tags) will be applied. adapters.each_value do |adapter| metrics.each_value do |metric| adapter.register!(metric) end end @configured_by = caller_locations(1, 1)[0].to_s end |
.configured? ⇒ Boolean Also known as: already_configured?
Returns Whether Yabeda.configure!
has been already called.
59 60 61 |
# File 'lib/yabeda.rb', line 59 def configured? !@configured_by.nil? end |
.default_tags ⇒ Hash<Symbol, Symbol>
Returns All added global default tags.
39 40 41 |
# File 'lib/yabeda.rb', line 39 def @default_tags ||= Concurrent::Hash.new end |
.groups ⇒ Hash<String, Yabeda::Group>
Returns All registered metrics.
22 23 24 25 26 |
# File 'lib/yabeda.rb', line 22 def groups @groups ||= Concurrent::Hash.new.tap do |hash| hash[nil] = Yabeda::GlobalGroup.new(nil) end end |
.metrics ⇒ Hash<String, Yabeda::Metric>
Returns All registered metrics.
17 18 19 |
# File 'lib/yabeda.rb', line 17 def metrics @metrics ||= Concurrent::Hash.new end |
.register_adapter(name, instance) ⇒ Object
45 46 47 48 49 50 51 |
# File 'lib/yabeda.rb', line 45 def register_adapter(name, instance) adapters[name] = instance # NOTE: Pretty sure there is race condition metrics.each do |_, metric| instance.register!(metric) end end |
.reset! ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Forget all the configuration. For testing purposes as it doesn’t rollback changes in adapters. rubocop: disable Metrics/AbcSize
92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/yabeda.rb', line 92 def reset! .clear adapters.clear groups.each_key { |group| singleton_class.send(:remove_method, group) if group && respond_to?(group) } @groups = nil metrics.each_key { |metric| singleton_class.send(:remove_method, metric) if respond_to?(metric) } @metrics = nil collectors.clear configurators.clear instance_variable_set(:@configured_by, nil) end |