class ProtorClient
Constants
- DEFAULT_BUCKET
- DEFAULT_CONFIG
- VERSION
Attributes
config[R]
Public Class Methods
new() { |config| ... }
click to toggle source
Calls superclass method
# File lib/protor_client.rb, line 18 def initialize(&block) super(&block) @families = [] @config = DEFAULT_CONFIG.dup @conn = nil yield(config) if block_given? end
Public Instance Methods
closeconn()
click to toggle source
# File lib/protor_client.rb, line 83 def closeconn @conn.close @conn = nil end
counter(metric_name, value, labels = {})
click to toggle source
# File lib/protor_client.rb, line 27 def counter(metric_name, value, labels = {}) safely do @families << Protomodel::Sample.new(:service => config[:service], :name => metric_name, :kind => "c", :value => value, :label => labels) end logger.debug("add counter") if logger end
gauge(metric_name, value, labels = {})
click to toggle source
# File lib/protor_client.rb, line 34 def gauge(metric_name, value, labels = {}) safely do @families << Protomodel::Sample.new(:service => config[:service], :name => metric_name, :kind => "g", :value => value, :label => labels) end logger.debug("add gauge") if logger end
histogram(metric_name, value, buckets = DEFAULT_BUCKET, labels = {})
click to toggle source
# File lib/protor_client.rb, line 41 def histogram(metric_name, value, buckets = DEFAULT_BUCKET, labels = {}) safely do @families << Protomodel::Sample.new(:service => config[:service], :name => metric_name, :kind => "h", :value => value, :label => labels, :histogramDef => buckets) end logger.debug("add histogram") if logger end
histogram_linear(metric_name, value, buckets, labels = {})
click to toggle source
# File lib/protor_client.rb, line 48 def histogram_linear(metric_name, value, buckets, labels = {}) safely do @families << Protomodel::Sample.new(:service => config[:service], :name => metric_name, :kind => "hl", :value => value, :label => labels, :histogramDef => buckets) end logger.debug("add histogram linear") if logger end
publish()
click to toggle source
# File lib/protor_client.rb, line 55 def publish safely do return unless @families.length openconn unless @conn msg = Protomodel::Samples.new(:array => @families) encoded = Protomodel::Samples.encode(msg) begin timeout(5) do @conn.write(encoded) reset if @conn.gets end rescue Exception => err # second attempt openconn begin timeout(5) do @conn.write(encoded) reset if @conn.gets end rescue Exception => err #raise error and put on logger logger.error(err) if logger raise err unless silent return end end end logger.debug("publish") if logger end
Private Instance Methods
logger()
click to toggle source
# File lib/protor_client.rb, line 112 def logger config[:logger] end
openconn()
click to toggle source
# File lib/protor_client.rb, line 102 def openconn begin @conn = TCPSocket.open(config[:host], config[:port]) rescue StandardError => err logger.error(err) if logger raise err unless silent return end end
reset()
click to toggle source
# File lib/protor_client.rb, line 90 def reset @families = [] end
safely(&block)
click to toggle source
# File lib/protor_client.rb, line 94 def safely(&block) synchronize(&block) rescue StandardError => err logger.error(err) if logger raise err unless silent return end
silent()
click to toggle source
# File lib/protor_client.rb, line 116 def silent config[:silent] end