Class: RoundhouseUi::Health

Inherits:
Object
  • Object
show all
Defined in:
lib/roundhouse_ui/health.rb

Overview

A composite health verdict for the dashboard. Instead of a static green dot, it rolls up the signals an on-call engineer actually checks — error rate, queue latency, worker utilization — into one status + a human reason, and exposes the sub-signals so the banner can explain why.

Defined Under Namespace

Classes: Signal

Constant Summary collapse

RANK =
{ ok: 0, warn: 1, crit: 2 }.freeze

Instance Method Summary collapse

Constructor Details

#initialize(stats:, queues:, metrics:) ⇒ Health

Returns a new instance of Health.



11
12
13
14
15
# File 'lib/roundhouse_ui/health.rb', line 11

def initialize(stats:, queues:, metrics:)
  @stats = stats
  @queues = queues
  @metrics = metrics
end

Instance Method Details

#healthy?Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/roundhouse_ui/health.rb', line 33

def healthy?
  status == :ok
end

#reasonObject



26
27
28
29
30
31
# File 'lib/roundhouse_ui/health.rb', line 26

def reason
  worst = signals.max_by { |s| RANK[s.status] }
  return "all signals nominal" if worst.nil? || worst.status == :ok

  worst.detail
end

#signalsObject



17
18
19
# File 'lib/roundhouse_ui/health.rb', line 17

def signals
  @signals ||= [ error_rate_signal, latency_signal, utilization_signal ].compact
end

#statusObject

Worst sub-signal wins.



22
23
24
# File 'lib/roundhouse_ui/health.rb', line 22

def status
  signals.map(&:status).max_by { |s| RANK[s] } || :ok
end