Giter Club home page Giter Club logo

yabeda's Introduction

Yabeda

Gem Version Build Status

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
    
      counter   :bells_rang_count, comment: "Total number of bells being rang"
      gauge     :whistles_active,  comment: "Number of whistles ready to whistle"
      histogram :whistle_runtime,  comment: "How long whistles are being active", unit: :seconds
    end
  2. 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
  3. 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
  4. See the docs for the adapter you're using

  5. Enjoy!

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.

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.

yabeda's People

Contributors

envek avatar dsalahutdinov avatar

Watchers

James Cloos avatar Dmitry Tsepelev avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.