Method: RedCross::Trackers::MonitorTracker#monitor_request

Defined in:
lib/red_cross/trackers/monitor_tracker.rb

#monitor_request(attrs) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# 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