Sha256: 77749e43e3b36898e7de025860ae2940fd07a35990331533549093c23d470ba7

Contents?: true

Size: 985 Bytes

Versions: 7

Compression:

Stored size: 985 Bytes

Contents

# frozen_string_literal: true

require 'rubygems' unless defined?(Gem)

module Vmpooler
  class Graphite
    attr_reader :server, :port, :prefix

    def initialize(params = {})
      raise ArgumentError, "Graphite server is required. Config: #{params.inspect}" if params['server'].nil? || params['server'].empty?

      @server = params['server']
      @port   = params['port'] || 2003
      @prefix = params['prefix'] || 'vmpooler'
    end

    def increment(label)
      log label, 1
    end

    def gauge(label, value)
      log label, value
    end

    def timing(label, duration)
      log label, duration
    end

    def log(path, value)
      Thread.new do
        socket = TCPSocket.new(server, port)
        begin
          socket.puts "#{prefix}.#{path} #{value} #{Time.now.to_i}"
        ensure
          socket.close
        end
      end
    rescue StandardError => e
      warn "Failure logging #{path} to graphite server [#{server}:#{port}]: #{e}"
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
vmpooler-0.13.1 lib/vmpooler/graphite.rb
vmpooler-0.13.0 lib/vmpooler/graphite.rb
vmpooler-0.12.0 lib/vmpooler/graphite.rb
vmpooler-0.11.3 lib/vmpooler/graphite.rb
vmpooler-0.11.2 lib/vmpooler/graphite.rb
vmpooler-0.11.1 lib/vmpooler/graphite.rb
vmpooler-0.11.0 lib/vmpooler/graphite.rb