class Gremlin::Registry
Constants
- AlreadyRegisteredError
- NotAMetricError
- NotRegisteredError
Public Class Methods
new()
click to toggle source
# File lib/gremlin/registry.rb, line 7 def initialize @r = Redis.new(**Gremlin.configuration.redis) end
Public Instance Methods
deregister(instrument)
click to toggle source
# File lib/gremlin/registry.rb, line 49 def deregister(instrument) name = instrument.name raise NotRegisteredError.new() if @r.hdel(retention_key, name) == 0 metrics end
deserialize(metric)
click to toggle source
# File lib/gremlin/registry.rb, line 55 def deserialize(metric) m = JSON.parse(metric) Gremlin::Instruments.const_get(m["type"].capitalize).new(m["name"].to_sym, m["docstring"], m["base_labels"]) end
dump_metrics()
click to toggle source
# File lib/gremlin/registry.rb, line 29 def dump_metrics retention_get end
exist?(name)
click to toggle source
# File lib/gremlin/registry.rb, line 38 def exist?(name) @r.hexists retention_key, name.to_s end
get(name)
click to toggle source
# File lib/gremlin/registry.rb, line 33 def get(name) m = retention_get[name.to_s] deserialize(m) unless m.nil? end
metrics()
click to toggle source
# File lib/gremlin/registry.rb, line 23 def metrics retention_get.values.map do |m| deserialize(m) end end
node()
click to toggle source
# File lib/gremlin/registry.rb, line 11 def node `hostname`.strip end
register(instrument)
click to toggle source
# File lib/gremlin/registry.rb, line 42 def register(instrument) name = instrument.name set = @r.hset retention_key, name, serialize(instrument) instrument end
retention_get()
click to toggle source
# File lib/gremlin/registry.rb, line 19 def retention_get @r.hgetall retention_key end
retention_key()
click to toggle source
# File lib/gremlin/registry.rb, line 15 def retention_key "gremlin_prometheus_#{node}_metrics_registry" end
serialize(metric)
click to toggle source
# File lib/gremlin/registry.rb, line 60 def serialize(metric) raise NotAMetricError.new("Specified object is not an instrument and cannot be serialized") unless metric.is_a? Gremlin::Instruments::Base { type: metric.type, name: metric.name.to_s, docstring: metric.docstring, base_labels: metric.base_labels }.to_json end