class RedCross::Trackers::MonitorTracker

Attributes

client[RW]

Public Class Methods

new(database = 'test', host = 'localhost', port = 8086, write_timeout = 0.05, read_timeout = 0.05, logger = false, async = true) click to toggle source
# File lib/red_cross/trackers/monitor_tracker.rb, line 6
def initialize(database = 'test', host = 'localhost', port = 8086, write_timeout = 0.05, read_timeout = 0.05,
               logger = false, async = true)
  InfluxDB::Logging.logger = logger
  async_options = async
  if async_options == true
    async_options = {
        num_worker_threads: 1
    }
  end

  @client = InfluxDB::Client.new database,
                                 host:  host,
                                 port:  port,
                                 async: async_options,
                                 retry: false,
                                 write_timeout:  write_timeout.to_f,
                                 read_timeout: read_timeout.to_f
end

Public Instance Methods

compact(hash) click to toggle source
# File lib/red_cross/trackers/monitor_tracker.rb, line 67
def compact(hash)
  hash.respond_to?(:compact) ? hash.compact : hash.delete_if {|k,v| v == nil }
end
flush() click to toggle source
# File lib/red_cross/trackers/monitor_tracker.rb, line 33
def flush
  {}
end
group(attrs, additional_args = {}) click to toggle source
# File lib/red_cross/trackers/monitor_tracker.rb, line 37
def group(attrs, additional_args = {})
  {}
end
identify(attrs, additional_args = {}) click to toggle source
# File lib/red_cross/trackers/monitor_tracker.rb, line 29
def identify(attrs, additional_args = {})
  {}
end
monitor_request(attrs) click to toggle source
# File lib/red_cross/trackers/monitor_tracker.rb, line 41
def monitor_request(attrs)
  return if client.nil?
  event = attrs[:event].to_s
  properties = attrs[:properties] || {}
  values = { count: 1 }.merge((properties.delete(:fields) || {}))
  begin
    client.write_point(event, { values: compact(values), tags: compact(properties) })
    client.writer.worker.stop!
  rescue => e
    error_data = {
        log_message: 'Failed to send monitor data to InfluxDB',
        event_arguments: {
            event: event,
            tags: properties,
            fields: values
        },
        exception: {
            class: e.class.to_s,
            message: e.message,
            backtrace: e.backtrace
        }
    }
    log :error, error_data
  end
end
track(attrs, additional_args = {}) click to toggle source
# File lib/red_cross/trackers/monitor_tracker.rb, line 25
def track(attrs, additional_args = {})
  monitor_request(attrs.merge(additional_args))
end