Class: Ask::Monitoring::Metrics::ResponseTime

Inherits:
Base
  • Object
show all
Defined in:
lib/ask/monitoring/metrics/response_time.rb

Overview

Computes response time percentiles from Ask::Event records.

Supports p50, p95, p99 latency queries.

Instance Attribute Summary

Attributes inherited from Base

#scope

Instance Method Summary collapse

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from Ask::Monitoring::Metrics::Base

Instance Method Details

#percentilesHash Also known as: as_chart_data

Returns Percentile data: { p50: Float, p95: Float, p99: Float }.

Returns:

  • (Hash)

    Percentile data: { p50: Float, p95: Float, p99: Float }



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/ask/monitoring/metrics/response_time.rb', line 9

def percentiles
  durations = scope.pluck(:duration).compact
  return { p50: 0, p95: 0, p99: 0 } if durations.empty?

  sorted = durations.sort
  {
    p50: percentile(sorted, 50),
    p95: percentile(sorted, 95),
    p99: percentile(sorted, 99)
  }
end