Página de status e monitoramento de uptime para apps Rails
Monitore controllers Rails, Active Record, filas Sidekiq e Redis. Página bonita ou construa a sua via nossa API.
Três formas de lançar uma página de status para Ruby on Rails
Escolha o nível de controle — sem código, low-code ou headless completo.
Hospedado
Adicione seu endpoint Ruby on Rails, aponte um CNAME para status.seudominio.com, pronto. Em 5 minutos.
Headless
Use nossa API pública para construir sua própria UI dentro do app Ruby on Rails. Controle total sobre design e marca.
Ver a APIBadges embutidos
Coloque badges SVG de uptime e status no seu README ou landing page. Atualizam a cada 5 minutos.
Cole este health endpoint no seu app Ruby on Rails
Copie, cole, aponte o PulseAPI para a URL. Retorna 200 saudável, 503 degradado.
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
endConecte com `get "/health", to: "health#show"` no routes.rb. Pule CSRF, auth e middleware que daria 401 para a sonda.
O que quebra em apps Ruby on Rails — e como detectar
Filas Sidekiq crescendo em silêncio
Um worker travado deixa a fila inflar enquanto a app serve tráfego. Exponha queue-depth e alerte sob limite.
Regressões N+1
Um .includes() faltante pode multiplicar por 10 o tempo de resposta. Asserções pegam a regressão no primeiro minuto pós-deploy.
Starvation do pool de conexões
Queries longas bloqueiam o pool. Health com timeout curto revela o problema antes do ActionCable perder usuários.
Não gostou da nossa página de status? Construa a sua em Ruby on Rails.
Nossa API retorna os mesmos dados que nossa UI hospedada consome. Spec OpenAPI completa em api.pulseapi.tech/docs.
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
endMonitoramento Ruby on Rails — FAQ
Funciona com Rails, Sinatra, Hanami ou Padrino?
Sim. O monitoramento é no nível HTTP — o framework não importa.
Como monitoro uma fila Sidekiq?
Retorne a profundidade da fila de uma action e alerte sob limite. PulseAPI suporta JSON-path: `$.queue_depth < 100`.
Funciona com Heroku, Fly.io e Render?
Sim, e com qualquer deploy. O PulseAPI só precisa de uma URL pública.
Posso embedar a página de status dentro do app Rails?
Sim. Chame a API pública de um controller, renderize um template, ou use um turbo_frame com um partial server-rendered.
Comece a monitorar seu app Ruby on Rails em 5 minutos
Plano grátis. Sem cartão. Adicione seu endpoint e receba alertas quando quebrar.