Sha256: 2bd4fff265bb378fff2bcd5a785601bcceb7d1c86e5d9a3ebadca431653a26ad

Contents?: true

Size: 1.94 KB

Versions: 47

Compression:

Stored size: 1.94 KB

Contents

# -*- ruby -*-
# encoding: utf-8
# This file is distributed under New Relic's license terms.
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.

module NewRelic
  module Agent
    module PayloadMetricMapping

      # this logic was extracted from TransactionEventAggregator for reuse by
      # the ErrorEventAggregator

      SPEC_MAPPINGS = {}

      class << self
        def append_mapped_metrics(txn_metrics, sample)
          if txn_metrics
            SPEC_MAPPINGS.each do |(name, extracted_values)|
              if txn_metrics.has_key?(name)
                stat = txn_metrics[name]
                extracted_values.each do |value_name, key_name|
                  sample[key_name] = stat.send(value_name)
                end
              end
            end
          end
        end

        private

        def map_metric(metric_name, to_add={})
          to_add.values.each(&:freeze)

          mappings = SPEC_MAPPINGS.fetch(metric_name, {})
          mappings.merge!(to_add)

          SPEC_MAPPINGS[metric_name] = mappings
        end
      end

      # All Transactions
      # Don't need to use the transaction-type specific metrics since this is
      # scoped to just one transaction, so Datastore/all has what we want.
      map_metric('Datastore/all',         :total_call_time => 'databaseDuration')
      map_metric('Datastore/all',         :call_count      => 'databaseCallCount')
      map_metric('GC/Transaction/all',    :total_call_time => 'gcCumulative')

      # Web Metrics
      map_metric('WebFrontend/QueueTime', :total_call_time => 'queueDuration')
      map_metric('External/allWeb',       :total_call_time => 'externalDuration')
      map_metric('External/allWeb',       :call_count      => 'externalCallCount')

      # Background Metrics
      map_metric('External/allOther',     :total_call_time => 'externalDuration')
      map_metric('External/allOther',     :call_count      => 'externalCallCount')
    end
  end
end

Version data entries

47 entries across 47 versions & 2 rubygems

Version Path
newrelic_rpm-4.8.0.341 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-4.7.1.340 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-4.7.0.339 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-4.6.0.338 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-4.5.0.337 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-4.4.0.336 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-4.3.0.335 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-4.2.0.334 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-4.1.0.333 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-4.0.0.332 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-3.18.1.330 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-3.18.0.329 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-3.17.2.327 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-3.17.1.326 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-3.17.0.325 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-3.16.3.323 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-3.16.2.321 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-3.16.1.320 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-3.16.0.318 lib/new_relic/agent/payload_metric_mapping.rb
ish_lib_manager-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/newrelic_rpm-3.15.2.317/lib/new_relic/agent/payload_metric_mapping.rb