Sha256: 6b4933fd1b8618835a6f09d61cfd53c0858baf893a51d1509c17ccc1926e4f1f

Contents?: true

Size: 1.36 KB

Versions: 8

Compression:

Stored size: 1.36 KB

Contents

# -*- ruby -*-
# This file is distributed under New Relic's license terms.
# See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
# frozen_string_literal: true

require 'new_relic/agent/event_aggregator'
require 'new_relic/agent/timestamp_sampled_buffer'

module NewRelic
  module Agent
    class SyntheticsEventAggregator < EventAggregator
      TIMESTAMP = 'timestamp'.freeze

      named :SyntheticsEventAggregator
      capacity_key :'synthetics.events_limit'
      enabled_key :'transaction_events.enabled'
      buffer_class TimestampSampledBuffer

      def record(event)
        return unless enabled?

        @lock.synchronize do
          @buffer.append(event: event, priority: -event[0][TIMESTAMP])
        end
      end

      private

      def after_harvest(metadata)
        record_dropped_synthetics(metadata)
      end

      def record_dropped_synthetics(metadata)
        num_dropped = metadata[:seen] - metadata[:captured]
        return unless num_dropped > 0

        NewRelic::Agent.logger.debug("Synthetics transaction event limit (#{metadata[:capacity]}) reached. Further synthetics events this harvest period dropped.")

        engine = NewRelic::Agent.instance.stats_engine
        engine.tl_record_supportability_metric_count("SyntheticsEventAggregator/synthetics_events_dropped", num_dropped)
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
newrelic_rpm-9.0.0 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-8.16.0 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-8.15.0 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-8.14.0 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-8.13.1 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-8.13.0 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-8.12.0 lib/new_relic/agent/synthetics_event_aggregator.rb
newrelic_rpm-8.11.0 lib/new_relic/agent/synthetics_event_aggregator.rb