All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Compatibility with Ruby 2.x, broken in 0.13.0 due to differences of keywords handling in Ruby 2.x for case when method has arguments with default values. @Envek
-
Ability to limit some metrics to specific adapters. #37 by @Keallar and @Envek
Yabeda.configure do group :cloud do adapter :newrelic, :datadog counter :foo end counter :bar, adapter: :prometheus end
-
Multiple expectations in RSpec matchers. @Envek
expect { whatever }.to increment_yabeda_counter(:my_counter).with( { tag: "foo" } => 1, { tag: "bar" } => (be >= 42), )
-
Don't require to provide tags for counters and histograms, use empty tags (
{}
) by default. See discussion at #26. @EnvekYabeda.foo.increment # same as Yabeda.foo.increment({}, by: 1)
- Summary metric type (mostly for Prometheus adapter).
- RSpec matchers
increment_yabeda_counter
,update_yabeda_gauge
, andmeasure_yabeda_histogram
for convenient testing. #25 by @Envek - Automatic setup of RSpec on
require "yabeda/rspec"
- Special test adapter that collects metric changes in memory
- Compatibility with anyway_config 1.x gem (which is automatically used on older Rubies, older then minimal Ruby 2.5 for anyway_config 2.x)
- Ability to pass a block to
Yabeda::Histogram#measure
to automatically measure its runtime in seconds using monotonic time. - Debug mode that will enable some additional metrics to help debug performance issues with your usage of Yabeda (or Yabeda itself). Use environment variable
YABEDA_DEBUG
to enable it or callYabeda.debug!
. - Debugging histogram
yabeda_collect_duration
that measures duration of every collect block, as they are used for collecting metrics of application state and usually makes some potentially slow queries to databases, network requests, etc.
- Adapters now should use method
Yabeda.collect!
instead of manual calling of every collector block.
- Added railtie to automatically configure Yabeda on Rails: moved from yabeda-rails gem. @Envek
#increment
and#decrement
convenience methods forYabeda::Gauge
. #13 by @dsalahutdinov- Ability to use custom step in
#increment
and#decrement
for gauges. @Envek
- Account for default tags in
Yabeda::Metric#get
. @Envek
- Compatibility with plugins (like yabeda-puma-plugin) that for some reason configures itself after Yabeda configuration was already applied by
Yabeda.configure!
(was broken in 0.6.0). @Envek
- Compatibility with Ruby < 2.6 due to usage of new
Hash#merge(*others)
with multiple arguments in 0.6.0. @Envek
Yabeda.with_tags
to redefine default tags for limited amount of time–for all metrics measured during a block execution. @Envek
- Default tags were not sent to adapters for metrics declared before
default_tag
declaration. @Envek
-
Ability to specify aggregation policy for metrics collected from multiple process and exposed via single endpoint. @Envek
For now it is only used by yabeda-prometheus when official Prometheus client is configured to use file storage for metrics.
-
Configuration of gem was changed from synchronous (at the moment when
configure
block was executed) to postponed (only onconfigure!
method call). @EnvekThis should allow to fix problems when metrics from gems are registered too early, before required changes to the monitoring system clients.
- Ability to specify default tag which value will be automatically added to all metrics. #7 by @asusikov.
-
Ability to specify an optional list of allowed
tags
as an option to metric declaration. @EnvekSome monitoring systems clients (like official prometheus client for Ruby) require to declare all possible metric labels upfront.
- Block-based DSL for defining groups and metrics. @DmitryTsepelev
- Removed accidental dependency from Rails. @dsalahutdinov
- Renamed evil-metrics gem to yabeda. @Envek
- Initial release of evil-metrics gem. @Envek