Sha256: 6073b43801e473a7278b20a83feec1165139b9466e5d324334282b0fc1abaa5a

Contents?: true

Size: 1.21 KB

Versions: 10

Compression:

Stored size: 1.21 KB

Contents

require_relative '../statistics'

module Datadog
  module Transport
    module HTTP
      # Tracks statistics for HTTP transports
      module Statistics
        def self.included(base)
          base.include(Datadog::Transport::Statistics)
          base.include(InstanceMethods)
        end

        # Instance methods for HTTP statistics
        module InstanceMethods
          # Decorate metrics for HTTP responses
          def metrics_for_response(response)
            super.tap do |metrics|
              # Add status code tag to api.responses metric
              if metrics.key?(:api_responses)
                (metrics[:api_responses].options[:tags] ||= []).tap do |tags|
                  tags << metrics_tag_value(response.code)
                end
              end
            end
          end

          private

          # The most common status code on a healthy tracer
          STATUS_CODE_200 = 'status_code:200'.freeze

          def metrics_tag_value(status_code)
            if status_code == 200
              STATUS_CODE_200 # DEV Saves string concatenation/creation for common case
            else
              "status_code:#{status_code}"
            end
          end
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
ddtrace-1.14.0 lib/ddtrace/transport/http/statistics.rb
ddtrace-1.13.1 lib/ddtrace/transport/http/statistics.rb
ddtrace-1.13.0 lib/ddtrace/transport/http/statistics.rb
ddtrace-1.12.1 lib/ddtrace/transport/http/statistics.rb
ddtrace-1.12.0 lib/ddtrace/transport/http/statistics.rb
ddtrace-1.11.1 lib/ddtrace/transport/http/statistics.rb
ddtrace-1.11.0 lib/ddtrace/transport/http/statistics.rb
ddtrace-1.11.0.beta1 lib/ddtrace/transport/http/statistics.rb
ddtrace-1.10.1 lib/ddtrace/transport/http/statistics.rb
ddtrace-1.10.0 lib/ddtrace/transport/http/statistics.rb