Class: ErrorMetric

Inherits:
ApplicationRecord
  • Object
show all
Defined in:
lib/generators/decision_agent/install/templates/error_metric.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.count_by_severity(time_range: 3600) ⇒ Object



18
19
20
# File 'lib/generators/decision_agent/install/templates/error_metric.rb', line 18

def self.count_by_severity(time_range: 3600)
  recent(time_range).group(:severity).count
end

.count_by_time_bucket(bucket_size: 60, time_range: 3600) ⇒ Object

Time series aggregation



30
31
32
33
34
# File 'lib/generators/decision_agent/install/templates/error_metric.rb', line 30

def self.count_by_time_bucket(bucket_size: 60, time_range: 3600)
  recent(time_range)
    .group("(EXTRACT(EPOCH FROM created_at)::bigint / #{bucket_size}) * #{bucket_size}")
    .count
end

.count_by_type(time_range: 3600) ⇒ Object

Aggregation helpers



14
15
16
# File 'lib/generators/decision_agent/install/templates/error_metric.rb', line 14

def self.count_by_type(time_range: 3600)
  recent(time_range).group(:error_type).count
end

.error_rate(time_range: 3600, total_operations: nil) ⇒ Object



22
23
24
25
26
27
# File 'lib/generators/decision_agent/install/templates/error_metric.rb', line 22

def self.error_rate(time_range: 3600, total_operations: nil)
  error_count = recent(time_range).count
  return 0.0 if total_operations.nil? || total_operations.zero?

  error_count.to_f / total_operations
end

Instance Method Details

#parsed_contextObject

Parse JSON context field



37
38
39
40
41
42
43
# File 'lib/generators/decision_agent/install/templates/error_metric.rb', line 37

def parsed_context
  return {} if context.nil?

  JSON.parse(context, symbolize_names: true)
rescue JSON::ParserError
  {}
end

#parsed_stack_traceObject

Parse JSON stack_trace field



46
47
48
49
50
51
52
# File 'lib/generators/decision_agent/install/templates/error_metric.rb', line 46

def parsed_stack_trace
  return [] if stack_trace.nil?

  JSON.parse(stack_trace)
rescue JSON::ParserError
  []
end