Class: RoundhouseUi::Health
- Inherits:
-
Object
- Object
- RoundhouseUi::Health
- 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
- #healthy? ⇒ Boolean
-
#initialize(stats:, queues:, metrics:) ⇒ Health
constructor
A new instance of Health.
- #reason ⇒ Object
- #signals ⇒ Object
-
#status ⇒ Object
Worst sub-signal wins.
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
33 34 35 |
# File 'lib/roundhouse_ui/health.rb', line 33 def healthy? status == :ok end |
#reason ⇒ Object
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 |
#signals ⇒ Object
17 18 19 |
# File 'lib/roundhouse_ui/health.rb', line 17 def signals @signals ||= [ error_rate_signal, latency_signal, utilization_signal ].compact end |
#status ⇒ Object
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 |