Class: Anomonitor::Detector

Inherits:
Object
  • Object
show all
Defined in:
lib/anomonitor/detector.rb

Instance Method Summary collapse

Constructor Details

#initialize(notifier: nil) ⇒ Detector

Returns a new instance of Detector.



5
6
7
# File 'lib/anomonitor/detector.rb', line 5

def initialize(notifier: nil)
  @notifier = notifier || Anomonitor.config.build_notifier
end

Instance Method Details

#evaluate(points) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/anomonitor/detector.rb', line 9

def evaluate(points)
  @active_sticky_keys = []
  @observed_sticky_bases = []
  anomalies = []

  unless points.empty?
    Anomonitor.config.alerts.each do |rule|
      points.each do |point|
        next unless metric_matches?(rule, point)
        next unless rule.matches_point?(point)

        anomaly = detect(rule, point)
        anomalies << anomaly if anomaly
      end
    end
  end

  resolve_sticky_anomalies(@active_sticky_keys, @observed_sticky_bases)
  Digester.flush_if_due!(notifier: @notifier) if Anomonitor.config.digest_enabled?
  anomalies
end