Sha256: 0b4170fc36ec246c4d833d6d1d1b88099b91578a883c7a8df44a13f160efadfe

Contents?: true

Size: 1.08 KB

Versions: 44

Compression:

Stored size: 1.08 KB

Contents

module ScoutApm
  module Instruments

    class HistogramReport
      attr_reader :name
      attr_reader :histogram

      def initialize(name, histogram)
        @name = name
        @histogram = histogram
      end

      def combine!(other)
        raise "Mismatched Histogram Names" unless name == other.name
        histogram.combine!(other.histogram)
        self
      end
    end

    class PercentileSampler
      attr_reader :logger

      # A hash of { time => RequestHistograms }
      attr_reader :histograms

      def initialize(logger, histograms)
        @logger = logger
        @histograms = histograms
      end

      def human_name
        'Percentiles'
      end

      def metrics(timestamp, store)
        store.track_histograms!(percentiles(timestamp), :timestamp => timestamp)
      end

      def percentiles(time)
        result = []

        histogram = histograms.delete(time)

        return result unless histogram

        histogram.each_name do |name|
          result << HistogramReport.new(name, histogram.raw(name))
        end

        result
      end
    end
  end
end

Version data entries

44 entries across 44 versions & 1 rubygems

Version Path
scout_apm-2.3.5 lib/scout_apm/instruments/percentile_sampler.rb
scout_apm-2.3.4 lib/scout_apm/instruments/percentile_sampler.rb
scout_apm-2.3.3 lib/scout_apm/instruments/percentile_sampler.rb
scout_apm-2.3.2 lib/scout_apm/instruments/percentile_sampler.rb
scout_apm-3.0.0.pre13 lib/scout_apm/instruments/percentile_sampler.rb
scout_apm-2.3.1 lib/scout_apm/instruments/percentile_sampler.rb
scout_apm-3.0.0.pre12 lib/scout_apm/instruments/percentile_sampler.rb
scout_apm-2.3.0 lib/scout_apm/instruments/percentile_sampler.rb
scout_apm-2.3.0.pre3 lib/scout_apm/instruments/percentile_sampler.rb
scout_apm-2.3.0.pre2 lib/scout_apm/instruments/percentile_sampler.rb
scout_apm-2.3.0.pre1 lib/scout_apm/instruments/percentile_sampler.rb
scout_apm-3.0.0.pre11 lib/scout_apm/instruments/percentile_sampler.rb
scout_apm-2.3.0.pre lib/scout_apm/instruments/percentile_sampler.rb
scout_apm-2.1.32 lib/scout_apm/instruments/percentile_sampler.rb
scout_apm-2.1.31 lib/scout_apm/instruments/percentile_sampler.rb
scout_apm-2.1.30 lib/scout_apm/instruments/percentile_sampler.rb
scout_apm-2.1.29 lib/scout_apm/instruments/percentile_sampler.rb
scout_apm-2.1.28 lib/scout_apm/instruments/percentile_sampler.rb
scout_apm-2.1.27 lib/scout_apm/instruments/percentile_sampler.rb
scout_apm-2.1.26 lib/scout_apm/instruments/percentile_sampler.rb