Sha256: 8ccebdfee6ae1cfc74e969fd85464d1dada0007ba78ed0e5cfc063d28ef3f7fb

Contents?: true

Size: 1.21 KB

Versions: 8

Compression:

Stored size: 1.21 KB

Contents

module Datadog::Notifications::Plugins
  class ActionController < Base
    attr_reader :metric_name

    # Options:
    #
    # *<tt>:metric_name</tt> - the metric name, defaults to "rails.request"
    # *<tt>:tags</tt> - additional tags
    def initialize(metric_name: 'rails.request', **opts)
      super

      @metric_name = metric_name
      Datadog::Notifications.subscribe 'process_action.action_controller' do |reporter, event|
        record reporter, event
      end
    end

    private

    def record(reporter, event)
      payload = event.payload
      method  = payload[:method].downcase
      status  = payload[:status]
      action  = payload[:action]
      ctrl    = payload[:controller].sub(/Controller$/, '').underscore
      format  = payload[:format]
      tags    = self.tags + %W[method:#{method} status:#{status} action:#{action} controller:#{ctrl} format:#{format}]

      reporter.batch do
        reporter.increment metric_name, tags: tags
        reporter.timing "#{metric_name}.time", event.duration, tags: tags
        reporter.timing "#{metric_name}.time.db", payload[:db_runtime], tags: tags
        reporter.timing "#{metric_name}.time.view", payload[:view_runtime], tags: tags
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
datadog-notifications-0.7.2 lib/datadog/notifications/plugins/action_controller.rb
datadog-notifications-0.7.1 lib/datadog/notifications/plugins/action_controller.rb
datadog-notifications-0.7.0 lib/datadog/notifications/plugins/action_controller.rb
datadog-notifications-0.6.7 lib/datadog/notifications/plugins/action_controller.rb
datadog-notifications-0.6.6 lib/datadog/notifications/plugins/action_controller.rb
datadog-notifications-0.6.5 lib/datadog/notifications/plugins/action_controller.rb
datadog-notifications-0.6.4 lib/datadog/notifications/plugins/action_controller.rb
datadog-notifications-0.6.3 lib/datadog/notifications/plugins/action_controller.rb