Start local prometheus_exporter server only in puma/sidekiq startup (#35005)

This commit is contained in:
David Roetzel 2025-06-11 15:37:59 +02:00 committed by GitHub
parent 722fb1ff55
commit 1623d54ec0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 33 additions and 7 deletions

View file

@ -5,16 +5,12 @@ if ENV['MASTODON_PROMETHEUS_EXPORTER_ENABLED'] == 'true'
require 'prometheus_exporter/middleware'
if ENV['MASTODON_PROMETHEUS_EXPORTER_LOCAL'] == 'true'
require 'prometheus_exporter/server'
require 'prometheus_exporter/client'
require 'mastodon/prometheus_exporter/local_server'
# bind is the address, on which the webserver will listen
# port is the port that will provide the /metrics route
server = PrometheusExporter::Server::WebServer.new bind: ENV.fetch('MASTODON_PROMETHEUS_EXPORTER_HOST', 'localhost'), port: ENV.fetch('MASTODON_PROMETHEUS_EXPORTER_PORT', '9394').to_i
server.start
# wire up a default local client
PrometheusExporter::Client.default = PrometheusExporter::LocalClient.new(collector: server.collector)
Mastodon::PrometheusExporter::LocalServer.bind = ENV.fetch('MASTODON_PROMETHEUS_EXPORTER_HOST', 'localhost')
Mastodon::PrometheusExporter::LocalServer.port = ENV.fetch('MASTODON_PROMETHEUS_EXPORTER_PORT', '9394').to_i
end
if ENV['MASTODON_PROMETHEUS_EXPORTER_WEB_DETAILED_METRICS'] == 'true'

View file

@ -26,6 +26,12 @@ Sidekiq.configure_server do |config|
require 'prometheus_exporter'
require 'prometheus_exporter/instrumentation'
if ENV['MASTODON_PROMETHEUS_EXPORTER_LOCAL'] == 'true'
config.on :startup do
Mastodon::PrometheusExporter::LocalServer.setup!
end
end
config.on :startup do
# Ruby process metrics (memory, GC, etc)
PrometheusExporter::Instrumentation::Process.start type: 'sidekiq'

View file

@ -21,6 +21,12 @@ if ENV['MASTODON_PROMETHEUS_EXPORTER_ENABLED'] == 'true'
require 'prometheus_exporter'
require 'prometheus_exporter/instrumentation'
if ENV['MASTODON_PROMETHEUS_EXPORTER_LOCAL'] == 'true'
before_fork do
Mastodon::PrometheusExporter::LocalServer.setup!
end
end
on_worker_boot do
# Ruby process metrics (memory, GC, etc)
PrometheusExporter::Instrumentation::Process.start(type: 'puma')

View file

@ -0,0 +1,18 @@
# frozen_string_literal: true
require 'prometheus_exporter/server'
require 'prometheus_exporter/client'
module Mastodon::PrometheusExporter
module LocalServer
mattr_accessor :bind, :port
def self.setup!
server = PrometheusExporter::Server::WebServer.new(bind:, port:)
server.start
# wire up a default local client
PrometheusExporter::Client.default = PrometheusExporter::LocalClient.new(collector: server.collector)
end
end
end