Sha256: 13e058f9d4efcc12ca5dbfb11dd71cc776e9578dbe3453797d228d3214ebbc9c

Contents?: true

Size: 1.26 KB

Versions: 3

Compression:

Stored size: 1.26 KB

Contents

require 'ruby-metrics/logging'

require 'ruby-metrics/time_units'

require 'ruby-metrics/instruments/counter'
require 'ruby-metrics/instruments/meter'
require 'ruby-metrics/instruments/gauge'
require 'ruby-metrics/instruments/histogram'
require 'ruby-metrics/instruments/timer'

require 'ruby-metrics/integration'

require 'json'

module Metrics
  class Agent
    include Logging

    attr_reader :instruments

    def initialize(options = {})
      @instruments = {}
    end

    alias_method :registered, :instruments

    def counter(name)
      @instruments[name] ||= Instruments::Counter.new
    end

    def meter(name)
      @instruments[name] ||= Instruments::Meter.new
    end

    def gauge(name, &block)
      @instruments[name] ||= Instruments::Gauge.new(&block)
    end

    def timer(name, options = {})
      @instruments[name] ||= Instruments::Timer.new(options)
    end

    def uniform_histogram(name)
      @instruments[name] ||= Instruments::UniformHistogram.new
    end

    # For backwards compatibility
    alias_method :histogram, :uniform_histogram

    def exponential_histogram(name)
      @instruments[name] ||= Instruments::ExponentialHistogram.new
    end

    def as_json(*_)
      @instruments
    end

    def to_json(*_)
      as_json.to_json
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
yam-ruby-metrics-0.8.8 lib/ruby-metrics/agent.rb
yam-ruby-metrics-0.8.7 lib/ruby-metrics/agent.rb
yam-ruby-metrics-0.8.6 lib/ruby-metrics/agent.rb