class Rmetrics::Influx

Handles the comunnication to Influx DB

Public Class Methods

new(options = {}) click to toggle source
# File lib/rmetrics/influx.rb, line 6
def initialize(options = {})
  @influx_client = InfluxDB::Client.new(options)
end

Public Instance Methods

write_data(table, data) click to toggle source
# File lib/rmetrics/influx.rb, line 10
def write_data(table, data)
  @influx_client.write_point(table, organize_event(data))
end

Private Instance Methods

adjust_values(act, payload) click to toggle source

rubocop:disable Metrics/MethodLength

# File lib/rmetrics/influx.rb, line 17
def adjust_values(act, payload)
  payload.each do |key, value|
    case value
    when Hash
      act[:tags].merge!(value.select { |_, v| v.is_a?(String) })
    when Numeric, Integer
      act[:values][key.to_sym] = value.to_f
    when String, TrueClass, FalseClass
      act[:values][key.to_sym] = value
    when Symbol
      act[:values][key.to_sym] = value.to_s
    else
      next
    end
  end
end
organize_event(event) click to toggle source

rubocop:enable Metrics/MethodLength

# File lib/rmetrics/influx.rb, line 35
def organize_event(event)
  act = {
    values: {
      duration: event.duration
    },
    tags: {
      name: event.name
    }
  }
  adjust_values(act, event.payload)
  act
end