Ruby on Rails

Statusseite und Uptime-Monitoring für Rails-Anwendungen

Überwache Rails-Controller, Active-Record-Verbindungen, Sidekiq-Queues und Redis. Hübsche Statusseite oder eigene über unsere API.

Drei Wege für eine Statusseite für Ruby on Rails

Wähle die Kontrolltiefe — kein Code, Low-Code oder Full Headless.

Gehostet

Ruby on Rails-Endpoint hinzufügen, CNAME auf status.deinedomain.com zeigen, fertig. In 5 Minuten.

Headless

Public API nutzen, eigene UI direkt in der Ruby on Rails-App bauen. Volle Kontrolle über Design und Branding.

API ansehen

Eingebettete Badges

SVG-Uptime- und -Status-Badges in README oder Landing Page einbauen. Aktualisiert sich alle 5 Minuten.

Diesen Health-Endpoint in deine Ruby on Rails-App einfügen

Kopieren, einfügen, PulseAPI auf die URL richten. 200 gesund, 503 degradiert.

app/controllers/health_controller.rb
class HealthController < ApplicationController
  skip_before_action :authenticate_user!, raise: false

  def show
    checks = {
      database: active_record_ok? ? "ok" : "fail",
      cache: cache_ok? ? "ok" : "fail",
      sidekiq: sidekiq_ok? ? "ok" : "fail",
    }
    healthy = checks.values.all? { |v| v == "ok" }
    render json: { status: healthy ? "healthy" : "degraded", **checks },
           status: healthy ? 200 : 503
  end

  private

  def active_record_ok?
    ActiveRecord::Base.connection.execute("SELECT 1") && true
  rescue StandardError
    false
  end

  def cache_ok?
    Rails.cache.write("health:probe", "1", expires_in: 5.seconds)
    Rails.cache.read("health:probe") == "1"
  rescue StandardError
    false
  end

  def sidekiq_ok?
    Sidekiq.redis { |c| c.ping == "PONG" }
  rescue StandardError
    false
  end
end

Verdrahten mit `get "/health", to: "health#show"` in routes.rb. CSRF, Auth und 401-werfende Middleware überspringen.

Was in Ruby on Rails-Apps kaputt geht — und wie man es fängt

Still wachsende Sidekiq-Queues

Ein festhängender Worker lässt die Queue explodieren, während die App weiter serviert. Queue-Depth-Endpoint und Threshold-Alert.

N+1-Regressionen

Ein vergessenes .includes() kann Response Time verzehnfachen. Response-Time-Assertions fangen das in der ersten Minute nach Deploy.

Leerer Connection-Pool

Lange Queries blockieren den Pool. Health-Endpoint mit kurzem Timeout zeigt das Problem, bevor ActionCable Nutzer verliert.

Headless-Ansatz

Statusseite gefällt dir nicht? Bau sie in Ruby on Rails selbst.

Unsere API liefert dieselben Daten wie unsere gehostete UI. Volle OpenAPI-Spec unter api.pulseapi.tech/docs.

app/controllers/status_controller.rb — eigene Status-UI auf Basis unserer API.
require "net/http"
require "json"

class StatusController < ApplicationController
  def show
    uri = URI("https://api.pulseapi.tech/status/acme")
    @data = JSON.parse(Net::HTTP.get(uri))
  end
end

Ruby on Rails-Monitoring — FAQ

Funktioniert mit Rails, Sinatra, Hanami oder Padrino?

Ja. Monitoring läuft auf HTTP-Ebene — Framework ist egal.

Wie überwache ich eine Sidekiq-Queue?

Controller-Action, die Queue-Tiefe zurückgibt, Alert über Threshold. PulseAPI unterstützt JSON-Path: `$.queue_depth < 100`.

Funktioniert mit Heroku, Fly.io und Render?

Ja, und mit jedem Deployment. PulseAPI braucht nur eine öffentliche URL.

Kann ich die Statusseite in die Rails-App einbetten?

Ja. Aus einem Controller Public API treffen, Template rendern, oder turbo_frame mit server-rendered Partial.

Deine Ruby on Rails-App in 5 Minuten überwachen

Kostenloser Tarif. Keine Kreditkarte. Endpoint hinzufügen, Alerts erhalten.