Sha256: 98cee306bd91bc346e5b8315d71e4d451c58f5345421e6081b4a4670544a485f
Contents?: true
Size: 1.91 KB
Versions: 2
Compression:
Stored size: 1.91 KB
Contents
require_relative '../../datadog/core/metrics/metric' require_relative '../../datadog/core/diagnostics/health' module Datadog module Transport # Tracks statistics for transports module Statistics def stats @stats ||= Counts.new end def update_stats_from_response!(response) if response.ok? stats.success += 1 stats.consecutive_errors = 0 else stats.client_error += 1 if response.client_error? stats.server_error += 1 if response.server_error? stats.internal_error += 1 if response.internal_error? stats.consecutive_errors += 1 end # Send health metrics Datadog.health_metrics.send_metrics( metrics_for_response(response).values ) end def metrics_for_response(response) {}.tap do |metrics| metrics[:api_errors] = Core::Metrics::Metric.new(:api_errors, nil, 1) if response.internal_error? metrics[:api_responses] = Core::Metrics::Metric.new(:api_responses, nil, 1) unless response.internal_error? end end def update_stats_from_exception!(exception) stats.internal_error += 1 stats.consecutive_errors += 1 # Send health metrics Datadog.health_metrics.send_metrics( metrics_for_exception(exception).values ) end def metrics_for_exception(_exception) { api_errors: Core::Metrics::Metric.new(:api_errors, nil, 1) } end # Stat counts class Counts attr_accessor \ :success, :client_error, :server_error, :internal_error, :consecutive_errors def initialize reset! end def reset! @success = 0 @client_error = 0 @server_error = 0 @internal_error = 0 @consecutive_errors = 0 end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ddtrace-1.10.1 | lib/ddtrace/transport/statistics.rb |
ddtrace-1.10.0 | lib/ddtrace/transport/statistics.rb |