All Projects → yabeda-rb → Yabeda

yabeda-rb / Yabeda

Licence: mit
Extendable framework for collecting and exporting metrics from your Ruby application

Programming Languages

ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to Yabeda

Metered Rs
Fast, ergonomic metrics for Rust
Stars: ✭ 258 (-35.82%)
Mutual labels:  monitoring, metrics
Prometheus.erl
Prometheus.io client in Erlang
Stars: ✭ 276 (-31.34%)
Mutual labels:  monitoring, metrics
Questdb
An open source SQL database designed to process time series data, faster
Stars: ✭ 7,544 (+1776.62%)
Mutual labels:  monitoring, metrics
Mtail
extract internal monitoring data from application logs for collection in a timeseries database
Stars: ✭ 3,028 (+653.23%)
Mutual labels:  monitoring, metrics
Kube Metrics Adapter
General purpose metrics adapter for Kubernetes HPA metrics
Stars: ✭ 309 (-23.13%)
Mutual labels:  monitoring, metrics
Cat
CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。
Stars: ✭ 16,236 (+3938.81%)
Mutual labels:  monitoring, metrics
Kube State Metrics
Add-on agent to generate and expose cluster-level metrics.
Stars: ✭ 3,433 (+753.98%)
Mutual labels:  monitoring, metrics
Hawkular Metrics
Time Series Metrics Engine based on Cassandra
Stars: ✭ 225 (-44.03%)
Mutual labels:  monitoring, metrics
Pandora
A Manageable, Measurable and Traceable Node.js Application Manager represented by Alibaba powered by TypeScript
Stars: ✭ 3,084 (+667.16%)
Mutual labels:  monitoring, metrics
Nightingale
💡 A Distributed and High-Performance Monitoring System. Prometheus enterprise edition
Stars: ✭ 4,003 (+895.77%)
Mutual labels:  monitoring, metrics
Opencensus Node
A stats collection and distributed tracing framework
Stars: ✭ 249 (-38.06%)
Mutual labels:  monitoring, metrics
Prometheus.ex
Prometheus.io Elixir client
Stars: ✭ 343 (-14.68%)
Mutual labels:  monitoring, metrics
Prometheus rabbitmq exporter
Prometheus.io exporter as a RabbitMQ Managment Plugin plugin
Stars: ✭ 248 (-38.31%)
Mutual labels:  monitoring, metrics
Gohalt
Gohalt 👮‍♀🛑: Fast; Simple; Powerful; Go Throttler library
Stars: ✭ 253 (-37.06%)
Mutual labels:  monitoring, metrics
Github Exporter
Prometheus exporter for github metrics
Stars: ✭ 231 (-42.54%)
Mutual labels:  monitoring, metrics
Micrometer
An application metrics facade for the most popular monitoring tools. Think SLF4J, but for metrics.
Stars: ✭ 3,173 (+689.3%)
Mutual labels:  monitoring, metrics
Snmpcollector
A full featured Generic SNMP data collector with Web Administration Interface for InfluxDB
Stars: ✭ 216 (-46.27%)
Mutual labels:  monitoring, metrics
Graphite exporter
Server that accepts metrics via the Graphite protocol and exports them as Prometheus metrics
Stars: ✭ 217 (-46.02%)
Mutual labels:  monitoring, metrics
Hastic Server
Hastic data management server for analyzing patterns and anomalies from Grafana
Stars: ✭ 292 (-27.36%)
Mutual labels:  monitoring, metrics
Zmon
Real-time monitoring of critical metrics & KPIs via elegant dashboards, Grafana3 visualizations & more
Stars: ✭ 334 (-16.92%)
Mutual labels:  monitoring, metrics

Yabeda

Gem Version

This software is Work in Progress: features will appear and disappear, API will be changed, your feedback is always welcome!

Extendable solution for easy setup of monitoring in your Ruby apps.

Sponsored by Evil Martians

Read more about Yabeda and the reasoning behind it in Martian Chronicles: “Meet Yabeda: Modular framework for instrumenting Ruby applications”

Installation

Most of the time you don't need to add this gem to your Gemfile directly (unless you're only collecting your custom metrics):

gem 'yabeda'
# Then add monitoring system adapter, e.g.:
# gem 'yabeda-prometheus'

And then execute:

$ bundle

Usage

  1. Declare your metrics:

    Yabeda.configure do
      group :your_app do
        counter   :bells_rang_count, comment: "Total number of bells being rang", tags: %i[bell_size]
        gauge     :whistles_active,  comment: "Number of whistles ready to whistle"
        histogram :whistle_runtime do
          comment "How long whistles are being active"
          unit :seconds
        end
      end
    end
    
  2. After your application was initialized and all metrics was declared, you need to apply Yabeda configuration:

    Yabeda.configure!
    

    If you're using Ruby on Rails then it will be configured automatically!

  3. Access metric in your app and use it!

    def ring_the_bell(id)
      bell = Bell.find(id)
      bell.ring!
      Yabeda.your_app.bells_rang_count.increment({bell_size: bell.size}, by: 1)
    end
    
    def whistle!
      Yabeda.your_app.whistle_runtime.measure do
        # Run your code
      end
    end
    
  4. Setup collecting of metrics that do not tied to specific events in you application. E.g.: reporting your app's current state

    Yabeda.configure do
      # This block will be executed periodically few times in a minute
      # (by timer or external request depending on adapter you're using)
      # Keep it fast and simple!
      collect do
        your_app.whistles_active.set({}, Whistle.where(state: :active).count)
      end
    end
    
  5. Optionally setup default tags that will be added to all metrics

    Yabeda.configure do
      default_tag :rails_environment, 'production'
    end
    
    # You can redefine them for limited amount of time
    Yabeda.with_tags(rails_environment: 'staging') do
      Yabeda.your_app.bells_rang_count.increment({bell_size: bell.size}, by: 1)
    end
    
  6. See the docs for the adapter you're using

  7. Enjoy!

Available monitoring system adapters

Maintained by Yabeda

Third-party adapters

These are developed and maintained by other awesome folks:

  • Statsd
  • …and more! You can write your own adapter and open a pull request to add it into this list.

Available plugins to collect metrics

Maintained by Yabeda

Third-party plugins

These are developed and maintained by other awesome folks:

Roadmap (aka TODO or Help wanted)

  • Ability to change metric settings for individual adapters

    histogram :foo, comment: "say what?" do
      adapter :prometheus do
        buckets [0.01, 0.5, , 60, 300, 3600]
      end
    end
    
  • Ability to route some metrics only for given adapter:

    adapter :prometheus do
      include_group :sidekiq
    end
    

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Releasing

  1. Bump version number in lib/yabeda/version.rb

    In case of pre-releases keep in mind rubygems/rubygems#3086 and check version with command like Gem::Version.new(Yabeda::VERSION).to_s

  2. Fill CHANGELOG.md with missing changes, add header with version and date.

  3. Make a commit:

    git add lib/yabeda/version.rb CHANGELOG.md
    version=$(ruby -r ./lib/yabeda/version.rb -e "puts Gem::Version.new(Yabeda::VERSION)")
    git commit --message="${version}: " --edit
    
  4. Create annotated tag:

    git tag v${version} --annotate --message="${version}: " --edit --sign
    
  5. Fill version name into subject line and (optionally) some description (changes will be taken from changelog and appended automatically)

  6. Push it:

    git push --follow-tags
    

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/yabeda-rb/yabeda.

License

The gem is available as open source under the terms of the MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].