class Mysqlcollector::Influxdb

Public Class Methods

new() click to toggle source
# File lib/mysqlcollector/influxdb.rb, line 5
def initialize
  @influx = InfluxDB::Client.new(host:     $config[:influx_host],
                                 database: $config[:influx_database],
                                 username: $config[:influx_user],
                                 password: $config[:influx_password],
                                 retry:    10)
end

Public Instance Methods

data(type, metrics, instance) click to toggle source
# File lib/mysqlcollector/influxdb.rb, line 22
def data(type, metrics, instance)
  # Validate a variable metrics has values on array?
  return nil if type.nil?
  return nil if instance.nil?
  return nil if metrics.nil?
  return nil if metrics.count == 0
  return nil unless metrics.is_a?(Array)

  # Send value:
  values = []
  metrics.each do |metric, value|
    if value.is_number?
      values << {
        series: type,
        values: { value: Float(value) },
        tags: { metric: metric,
                instance: instance }
      }

      Mysqlcollector::Log.new.debug("InfluxDB Values: #{values.last}");
    end
  end
  values
end
send(type, metrics) click to toggle source
# File lib/mysqlcollector/influxdb.rb, line 47
def send(type, metrics)
  metrics = vacuum(metrics)
  metrics = data(type, metrics, $config[:alias])

  return nil unless metrics.is_a?(Array)

  @influx.write_points(metrics)
rescue Exception => error
  Mysqlcollector::Log.new.error(error.message)
end
vacuum(values) click to toggle source
# File lib/mysqlcollector/influxdb.rb, line 13
def vacuum(values)
  # Validate it is array and have values?
  return nil if values.nil?
  return nil unless values.is_a?(Array)

  # Remove empty variable on array of array:
  values.reject{ |a| a.all? {|e| e.nil? || e.strip.empty? }}
end