Move yabeda/prometheus configuration to gem

This commit is contained in:
Jorge Manrubia
2025-11-28 11:51:24 +01:00
parent 95c8a76391
commit d30e327f1e
3 changed files with 74 additions and 0 deletions
+11
View File
@@ -24,4 +24,15 @@ Gem::Specification.new do |spec|
spec.add_dependency "rails", ">= 8.1.0.beta1"
spec.add_dependency "queenbee"
spec.add_dependency "rails_structured_logging"
spec.add_dependency "sentry-ruby"
spec.add_dependency "sentry-rails"
spec.add_dependency "yabeda"
spec.add_dependency "yabeda-actioncable"
spec.add_dependency "yabeda-activejob"
spec.add_dependency "yabeda-gc"
spec.add_dependency "yabeda-http_requests"
spec.add_dependency "yabeda-prometheus-mmap"
spec.add_dependency "yabeda-puma-plugin"
spec.add_dependency "yabeda-rails"
spec.add_dependency "prometheus-client-mmap"
end
+36
View File
@@ -18,6 +18,42 @@ module Fizzy
app.config.middleware.insert_after(ActiveRecord::Middleware::DatabaseSelector, TransactionPinning::Middleware)
end
initializer "fizzy_saas.sentry" do
if !Rails.env.local? && ENV["SKIP_TELEMETRY"].blank?
Sentry.init do |config|
config.dsn = ENV["SENTRY_DSN"]
config.breadcrumbs_logger = %i[ active_support_logger http_logger ]
config.send_default_pii = false
config.release = ENV["GIT_REVISION"]
config.excluded_exceptions += [ "ActiveRecord::ConcurrentMigrationError" ]
end
end
end
initializer "fizzy_saas.yabeda" do
require "prometheus/client/support/puma"
Prometheus::Client.configuration.logger = Rails.logger
Prometheus::Client.configuration.pid_provider = Prometheus::Client::Support::Puma.method(:worker_pid_provider)
Yabeda::Rails.config.controller_name_case = :camel
Yabeda::ActiveJob.install!
require "yabeda/solid_queue"
Yabeda::SolidQueue.install!
Yabeda::ActionCable.configure do |config|
config.channel_class_name = "ActionCable::Channel::Base"
end
end
initializer "fizzy_saas.solid_queue" do
SolidQueue.on_start do
Process.warmup
Yabeda::Prometheus::Exporter.start_metrics_server!
end
end
initializer "fizzy_saas.production_config", before: :load_config_initializers do |app|
if Rails.env.local?
if Rails.root.join("tmp/structured-logging.txt").exist?
+27
View File
@@ -0,0 +1,27 @@
module Yabeda
module SolidQueue
def self.install!
Yabeda.configure do
group :solid_queue
gauge :jobs_failed_count, comment: "Number of failed jobs"
gauge :jobs_unreleased_count, comment: "Number of claimed jobs that don't belong to any process"
gauge :jobs_scheduled_and_delayed_count, comment: "Number of scheduled jobs that have over 5 minutes delay"
gauge :recurring_tasks_count, comment: "Number of recurring jobs scheduled"
gauge :recurring_tasks_delayed_count, comment: "Number of recurring jobs that haven't been enqueued within their schedule"
collect do
if ::SolidQueue.supervisor?
solid_queue.jobs_failed_count.set({}, ::SolidQueue::FailedExecution.count)
solid_queue.jobs_unreleased_count.set({}, ::SolidQueue::ClaimedExecution.where(process: nil).count)
solid_queue.jobs_scheduled_and_delayed_count.set({}, ::SolidQueue::ScheduledExecution.where(scheduled_at: ..5.minutes.ago).count)
solid_queue.recurring_tasks_count.set({}, ::SolidQueue::RecurringTask.count)
solid_queue.recurring_tasks_delayed_count.set({}, ::SolidQueue::RecurringTask.count do |task|
task.last_enqueued_time.present? && (task.previous_time - task.last_enqueued_time) > 5.minutes
end)
end
end
end
end
end
end