class MetricsCapacitor::Model::Metric

Public Class Methods

new(data = {}) click to toggle source
# File lib/metrics-capacitor/model/metric.rb, line 8
def initialize(data = {})
  @metric = data if data.class == Hash
  @metric ||= JSON.parse(data, symbolize_names: true)
end

Public Instance Methods

name() click to toggle source
# File lib/metrics-capacitor/model/metric.rb, line 29
def name
  @metric[:name].to_s
end
tags() click to toggle source
# File lib/metrics-capacitor/model/metric.rb, line 33
def tags
  return @metric[:tags] if ( @metric[:tags] || @metric[:tags].empty? )
  { capacitor: 'untagged' }
end
timestamp(scale = :ms) click to toggle source
# File lib/metrics-capacitor/model/metric.rb, line 51
def timestamp(scale = :ms)
  m = case scale
      when :ms
        1000.0
      when :us
        1_000_000.0
      when :ns
        1_000_000_000.0
      else
        1.0
      end
  return (Time.now.to_f * m).to_i.to_s unless @metric[:timestamp]
  (Time.at(@metric[:timestamp]).to_f * m).to_i.to_s
end
to_elastic() click to toggle source
# File lib/metrics-capacitor/model/metric.rb, line 13
def to_elastic
  { index: {
      data: {
        :@name      => name,
        :@timestamp => timestamp(:ms),
        :@tags      => tags,
        :@values    => values
      }
    }
  }
end
to_redis() click to toggle source
# File lib/metrics-capacitor/model/metric.rb, line 25
def to_redis
  @metric.to_json
end
values() click to toggle source
# File lib/metrics-capacitor/model/metric.rb, line 38
def values
  case @metric[:values]
  when Hash
    return @metric[:values]
  when Integer
    return { value: @metric[:values].to_f }
  when Float
    return { value: @metric[:values] }
  else
    return { value: 0.0 }
  end
end