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/version.rb,
lib/yabeda/histogram.rb,
lib/yabeda/base_adapter.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 Classes: AlreadyConfiguredError, BaseAdapter, ConfigurationError, Counter, Gauge, Group, Histogram, Metric, Tags

Constant Summary collapse

VERSION =
"0.6.1"

Class Method Summary collapse

Methods included from DSL

included

Class Method Details

.adaptersHash<String, Yabeda::BaseAdapter>

Returns All loaded adapters.

Returns:



26
27
28
# File 'lib/yabeda.rb', line 26

def adapters
  @adapters ||= Concurrent::Hash.new
end

.collectorsArray<Proc>

Returns All collectors for periodical retrieving of metrics.

Returns:

  • (Array<Proc>)

    All collectors for periodical retrieving of metrics



31
32
33
# File 'lib/yabeda.rb', line 31

def collectors
  @collectors ||= Concurrent::Array.new
end

.configuratorsArray<Proc>

Returns All configuration blocks for postponed setup.

Returns:

  • (Array<Proc>)

    All configuration blocks for postponed setup



51
52
53
# File 'lib/yabeda.rb', line 51

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



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/yabeda.rb', line 64

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.

Returns:

  • (Boolean)

    Whether Yabeda.configure! has been already called



56
57
58
# File 'lib/yabeda.rb', line 56

def configured?
  !@configured_by.nil?
end

.default_tagsHash<Symbol, Symbol>

Returns All added default tags.

Returns:

  • (Hash<Symbol, Symbol>)

    All added default tags



36
37
38
# File 'lib/yabeda.rb', line 36

def default_tags
  @default_tags ||= Concurrent::Hash.new
end

.groupsHash<String, Yabeda::Group>

Returns All registered metrics.

Returns:



21
22
23
# File 'lib/yabeda.rb', line 21

def groups
  @groups ||= Concurrent::Hash.new
end

.metricsHash<String, Yabeda::Metric>

Returns All registered metrics.

Returns:



16
17
18
# File 'lib/yabeda.rb', line 16

def metrics
  @metrics ||= Concurrent::Hash.new
end

.register_adapter(name, instance) ⇒ Object

Parameters:



42
43
44
45
46
47
48
# File 'lib/yabeda.rb', line 42

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.



88
89
90
91
92
93
94
95
96
# File 'lib/yabeda.rb', line 88

def reset!
  default_tags.clear
  adapters.clear
  groups.clear
  metrics.clear
  collectors.clear
  configurators.clear
  instance_variable_set(:@configured_by, nil)
end