Class: Admin::HealthCheck

Inherits:
Object
  • Object
show all
Defined in:
lib/generators/ruby_cms/templates/services/admin/health_check.rb

Overview

Aggregates a read-only snapshot of system health for the admin dashboard.

Every probe is independently rescued so one broken check cannot take down the page. Result is cached for 30 seconds because the page polls.

TODO: model HealthIncident is not in scope yet — :incidents returns [].

Constant Summary collapse

CACHE_KEY =
"admin.health"
CACHE_TTL =
30.seconds
DB_WARN_MS =

Latency thresholds (ms) for status grading on the Postgres ping.

100
DB_DOWN_MS =
500

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.callObject



18
19
20
# File 'lib/generators/ruby_cms/templates/services/admin/health_check.rb', line 18

def self.call
  Rails.cache.fetch(CACHE_KEY, expires_in: CACHE_TTL) { new.call }
end

Instance Method Details

#callObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/generators/ruby_cms/templates/services/admin/health_check.rb', line 22

def call
  services = [
    web_service,
    db_service,
    redis_service,
    sidekiq_service,
    storage_service,
    cdn_service,
    smtp_service
  ].compact

  {
    overall: worst_status(services.map { |s| s[:status] }),
    uptime_days: uptime_days,
    deploy: deploy_info,
    services: services,
    queues: sidekiq_queues,
    db: db_info,
    incidents: incidents
  }
end