module Datadog::Tracing::Transport::Statistics
def metrics_for_exception(_exception)
def metrics_for_exception(_exception) { api_errors: Core::Metrics::Metric.new(:api_errors, nil, 1) } end
def metrics_for_response(response)
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 stats
def stats @stats ||= Counts.new end
def update_stats_from_exception!(exception)
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 update_stats_from_response!(response)
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