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-6.11.0.365 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-6.10.0.364 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-6.9.0.363 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-6.8.0.360 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-6.7.0.359 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-6.6.0.358 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-6.5.0.357 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-6.4.0.356 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-6.3.0.355 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-6.2.0.354 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-6.1.0.352 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-6.0.0.351 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-5.7.0.350 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-5.6.0.349 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-5.5.0.348 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-5.4.0.347 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-5.3.0.346 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-5.2.0.345 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-5.1.0.344 lib/new_relic/agent/payload_metric_mapping.rb
newrelic_rpm-5.0.0.342 lib/new_relic/agent/payload_metric_mapping.rb