/ ___)(_ _)/ _\(_ _)/ )( \( __)
\___ \ )( / \ )( ) \/ ( ) _)
(____/ (__)\_/\_/(__) \____/(____)
Rock solid metrics report...
Easily track application metrics into Statsite (Statsd compatible).
The library has different backends, one to be used for production environment (ie. actually sending metrics using the Statsd protocol), and the others for testing or developing.
The available backends are:
Statue::UDPBackend
-> this is the one that actually sends metrics to the Statsd.
eg.
Statue.backend = Statue::UDPBackend.new(statsd_host, statsd_port)
Statue::NullBackend
, this backend discards all metrics (useful for test environment, if you
aren't interested in testing which metrics are sent).
Statue::CaptureBackend
, this backend collects all metrics (useful for test environment, if you
arent interested in testing which metrics are sent). You can check the metrics with Statue.backend.captures
and reset this array with Statue.backend.captures.clear
or by setting a new instance before each test.
Statue::LoggerBackend
, this backend logs the received metrics to a logger (useful for development purposes)
eg.
Statue.backend = Statue::LoggerBackend.new(Rails.logger)
Statue.report_increment('metric.name')
-> send to Statsd an increment to the counter metric.name
Statue.report_gauge('metric.name', value)
-> send to Statsd the gauge value for metric.name
Statue.report_duration('metric.name') { some_operation } # => some_operation_result
-> send to Statsd the
measure for the block duration in metric.name
Statue.report_success_or_failure('metric.name') { some_operation } # => some_operation_result
-> checks the
result of the block, if its a truthy
value, then increments metric.name.success
, else it increments
metric.name.failure
.
The stopwatch provides an easy way to track the duration of a long process with multiple phases.
stopwatch = Statue.stopwatch("metric") # => Starts tracking time
while something do
do_something
stopwatch.partial # => reports duration from last partial until now as: "metric.runtime.partial"
end
stopwatch.stop # => reports duration from start until now as: "metric.runtime.total"
We provide a middleware to track basic request metrics, see: Statue::RackStatistics
There's also a middleware for Sidekiq, which can easily be added by adding these lines to the initializer:
# config/initializers/sidekiq.rb
Sidekiq.configure_server do |config|
config.server_middleware do |chain|
chain.add Statue::SidekiqStatistics::SidekiqMiddleware
end
end
- Fork it ( https://github.com/restorando/statue/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request