Module: Yabeda::DSL::ClassMethods
- Defined in:
- lib/yabeda/dsl/class_methods.rb
Instance Method Summary collapse
-
#adapter(*adapter_names, group: @group) ⇒ Object
Limit all group metrics to specific adapters only.
-
#collect(&block) ⇒ Object
Define the actions that should be performed.
-
#configure(&block) ⇒ Object
Block for grouping and simplifying configuration of related metrics.
-
#counter(*args, **kwargs, &block) ⇒ Object
Register a growing-only counter.
-
#default_tag(name, value, group: @group) ⇒ Object
Add default tag for all metric.
-
#gauge(*args, **kwargs, &block) ⇒ Object
Register a gauge.
-
#group(group_name) ⇒ Object
Specify metric category or group for all consecutive metrics in this
configure
block. -
#histogram(*args, **kwargs, &block) ⇒ Object
Register a histogram.
-
#summary(*args, **kwargs, &block) ⇒ Object
Register a summary.
-
#temporary_tags ⇒ Object
private
Get tags set by
with_tags
. -
#with_tags(**tags) ⇒ Object
Redefine default tags for a limited amount of time.
Instance Method Details
#adapter(*adapter_names, group: @group) ⇒ Object
Limit all group metrics to specific adapters only
98 99 100 101 102 103 |
# File 'lib/yabeda/dsl/class_methods.rb', line 98 def adapter(*adapter_names, group: @group) raise ConfigurationError, "Adapter limitation can't be defined outside of group" unless group Yabeda.groups[group] ||= Yabeda::Group.new(group) Yabeda.groups[group].adapter(*adapter_names) end |
#collect(&block) ⇒ Object
Define the actions that should be performed
24 25 26 |
# File 'lib/yabeda/dsl/class_methods.rb', line 24 def collect(&block) ::Yabeda.collectors.push(block) end |
#configure(&block) ⇒ Object
Block for grouping and simplifying configuration of related metrics
17 18 19 20 21 |
# File 'lib/yabeda/dsl/class_methods.rb', line 17 def configure(&block) Yabeda.configurators.push([@group, block]) class_exec(&block) if Yabeda.configured? @group = nil end |
#counter(*args, **kwargs, &block) ⇒ Object
Register a growing-only counter
42 43 44 45 |
# File 'lib/yabeda/dsl/class_methods.rb', line 42 def counter(*args, **kwargs, &block) metric = MetricBuilder.new(Counter).build(args, kwargs, @group, &block) register_metric(metric) end |
#default_tag(name, value, group: @group) ⇒ Object
Add default tag for all metric
69 70 71 72 73 74 75 76 |
# File 'lib/yabeda/dsl/class_methods.rb', line 69 def default_tag(name, value, group: @group) if group Yabeda.groups[group] ||= Yabeda::Group.new(group) Yabeda.groups[group].default_tag(name, value) else Yabeda.[name] = value end end |
#gauge(*args, **kwargs, &block) ⇒ Object
Register a gauge
48 49 50 51 |
# File 'lib/yabeda/dsl/class_methods.rb', line 48 def gauge(*args, **kwargs, &block) metric = MetricBuilder.new(Gauge).build(args, kwargs, @group, &block) register_metric(metric) end |
#group(group_name) ⇒ Object
Specify metric category or group for all consecutive metrics in this configure
block. On most adapters it is only adds prefix to the metric name but on some (like NewRelic) it is treated individually and has a special meaning.
32 33 34 35 36 37 38 39 |
# File 'lib/yabeda/dsl/class_methods.rb', line 32 def group(group_name) @group = group_name Yabeda.groups[@group] ||= Yabeda::Group.new(@group) return unless block_given? yield @group = nil end |
#histogram(*args, **kwargs, &block) ⇒ Object
Register a histogram
54 55 56 57 |
# File 'lib/yabeda/dsl/class_methods.rb', line 54 def histogram(*args, **kwargs, &block) metric = MetricBuilder.new(Histogram).build(args, kwargs, @group, &block) register_metric(metric) end |
#summary(*args, **kwargs, &block) ⇒ Object
Register a summary
60 61 62 63 |
# File 'lib/yabeda/dsl/class_methods.rb', line 60 def summary(*args, **kwargs, &block) metric = MetricBuilder.new(Summary).build(args, kwargs, @group, &block) register_metric(metric) end |
#temporary_tags ⇒ 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.
Get tags set by with_tags
91 92 93 |
# File 'lib/yabeda/dsl/class_methods.rb', line 91 def Thread.current[:yabeda_temporary_tags] ||= {} end |
#with_tags(**tags) ⇒ Object
Redefine default tags for a limited amount of time
80 81 82 83 84 85 86 |
# File 'lib/yabeda/dsl/class_methods.rb', line 80 def (**) = Thread.current[:yabeda_temporary_tags] = Thread.current[:yabeda_temporary_tags].merge() yield ensure Thread.current[:yabeda_temporary_tags] = end |