class RedCross::Trackers::ApplicationTracker

Attributes

client[RW]

Public Class Methods

new(host, port, database = 'application_metrics') click to toggle source
# File lib/red_cross/trackers/application_tracker.rb, line 12
def initialize(host, port, database = 'application_metrics')
  @client = InfluxDB::Client.new udp: {
                                     host:  host,
                                     port:  port,
                                 },
                                 discard_write_errors: true,
                                 database: database
end

Public Instance Methods

compact(hash) click to toggle source
# File lib/red_cross/trackers/application_tracker.rb, line 62
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/application_tracker.rb, line 29
def flush
  {}
end
group(attrs, additional_args = {}) click to toggle source
# File lib/red_cross/trackers/application_tracker.rb, line 33
def group(attrs, additional_args = {})
  {}
end
identify(attrs, additional_args = {}) click to toggle source
# File lib/red_cross/trackers/application_tracker.rb, line 25
def identify(attrs, additional_args = {})
  {}
end
monitor_request(attrs) click to toggle source
# File lib/red_cross/trackers/application_tracker.rb, line 37
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) })
  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/application_tracker.rb, line 21
def track(attrs, additional_args = {})
  monitor_request(attrs.merge(additional_args))
end