Class: Lapsoss::Middleware::MetricsCollector

Inherits:
Base
  • Object
show all
Defined in:
lib/lapsoss/middleware/metrics_collector.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, collector: nil) ⇒ MetricsCollector

Returns a new instance of MetricsCollector.



6
7
8
9
10
11
12
13
14
15
16
# File 'lib/lapsoss/middleware/metrics_collector.rb', line 6

def initialize(app, collector: nil)
  super(app)
  @collector = collector
  @metrics = {
    events_processed: 0,
    events_dropped: 0,
    events_by_type: Hash.new(0),
    events_by_level: Hash.new(0)
  }
  @mutex = Mutex.new
end

Instance Method Details

#call(event, hint = {}) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/lapsoss/middleware/metrics_collector.rb', line 18

def call(event, hint = {})
  @mutex.synchronize do
    @metrics[:events_processed] += 1
    @metrics[:events_by_type][event.type] += 1
    @metrics[:events_by_level][event.level] += 1
  end

  result = @app.call(event, hint)

  if result.nil?
    @mutex.synchronize do
      @metrics[:events_dropped] += 1
    end
  end

  # Send to external collector if provided
  @collector&.call(@metrics.dup, event, hint)

  result
end

#metricsObject



39
40
41
# File 'lib/lapsoss/middleware/metrics_collector.rb', line 39

def metrics
  @mutex.synchronize { @metrics.dup }
end