Class: Lapsoss::Middleware::MetricsCollector
- Defined in:
- lib/lapsoss/middleware/metrics_collector.rb
Instance Method Summary collapse
- #call(event, hint = {}) ⇒ Object
-
#initialize(app, collector: nil) ⇒ MetricsCollector
constructor
A new instance of MetricsCollector.
- #metrics ⇒ Object
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 |
#metrics ⇒ Object
39 40 41 |
# File 'lib/lapsoss/middleware/metrics_collector.rb', line 39 def metrics @mutex.synchronize { @metrics.dup } end |