Class: ErrorMetric
- Inherits:
-
ApplicationRecord
- Object
- ApplicationRecord
- ErrorMetric
- Defined in:
- lib/generators/decision_agent/install/templates/error_metric.rb
Class Method Summary collapse
- .count_by_severity(time_range: 3600) ⇒ Object
-
.count_by_time_bucket(bucket_size: 60, time_range: 3600) ⇒ Object
Time series aggregation.
-
.count_by_type(time_range: 3600) ⇒ Object
Aggregation helpers.
- .error_rate(time_range: 3600, total_operations: nil) ⇒ Object
Instance Method Summary collapse
-
#parsed_context ⇒ Object
Parse JSON context field.
-
#parsed_stack_trace ⇒ Object
Parse JSON stack_trace field.
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_context ⇒ Object
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_trace ⇒ Object
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 |