class MetricsAdapter::Trackers::SlowRequest

Attributes

slow_request_threshold[R]

Public Class Methods

new(event) click to toggle source
Calls superclass method MetricsAdapter::Trackers::Base::new
# File lib/metrics_adapter/trackers/slow_request.rb, line 6
def initialize(event)
  @slow_request_threshold = ::MetricsAdapter.thresholds.fetch(:slow_request)
  super
end

Public Instance Methods

call() click to toggle source
# File lib/metrics_adapter/trackers/slow_request.rb, line 11
def call
  return if conditional.present? && conditional.call.blank?

  if event.duration > slow_request_threshold
    data = {
      id: event.transaction_id,
      name: metric_name,
      duration: (event.duration / 1000),
      method: event.payload[:method].to_s.downcase,
      cpu_time_in_ms: event.cpu_time,
      idle_time_in_ms: event.idle_time,
      path: event.payload[:path]
    }.merge(extra_attributes)
    logger.info(
      "Slow request detected. Sending data to #{adapter.class.name}"
    ) if logger
    adapter.publish(data)
  end
end