Sha256: 37a41a3c58df9d67f5778839861b56e95576f40e310885d876df4530019c234a

Contents?: true

Size: 972 Bytes

Versions: 6

Compression:

Stored size: 972 Bytes

Contents

require 'monkeyshines/monitor'

module Graphiterb
  class GraphiteLogger < Monkeyshines::Monitor::PeriodicMonitor
    # Connection to graphite server
    attr_reader :sender
    # the leading segment for sent metrics -- eg 'scrapers' or 'api_calls'
    attr_reader :main_scope

    def initialize main_scope, *args
      super *args
      self.time_interval ||= Settings.update_delay
      @sender     = GraphiteSender.new
      @main_scope = main_scope
    end

    def periodically &block
      super do |iter, since|
        metrics = []
        block.call(metrics, iter, since)
        sender.send *metrics
      end
    end

    def hostname
      @host ||= `hostname`.chomp.gsub(".","_")
    end

    def scope_name *scope
      [main_scope, scope].flatten.reject(&:blank?).join('.')
    end

    def run!
      loop do
        periodically do |metrics, iter, since|
          get_metrics metrics, iter, since
        end
        sleep 1
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
graphiterb-0.1.5 lib/graphiterb/graphite_logger.rb
graphiterb-0.1.4 lib/graphiterb/graphite_logger.rb
graphiterb-0.1.3 lib/graphiterb/graphite_logger.rb
graphiterb-0.1.2 lib/graphiterb/graphite_logger.rb
graphiterb-0.1.1 lib/graphiterb/graphite_logger.rb
graphiterb-0.1.0 lib/graphiterb/graphite_logger.rb